Powershellを使用してSQL ServerデータベースでSQLクエリを実行し、その結果をExcelスプレッドシートに出力しています。PowerShellの出力ファイルで先月の名前を使用する
それは、現在、私は手動でworksheetnameを内、およびファイル名に、SQLクエリで日付フィルタを指定していますので、正常に動作している
invoke-sqlcmd -inputfile "C:\scripts-and-reports\all_new-matters-since-last-run.sql" -serverinstance "PE-SERVER\PRACTICEEVOLVE" -database "PracticeEvolve_c1" |
Select-Object * -ExcludeProperty "RowError","RowState","Table","ItemArray","HasErrors" |
Export-XLSX -WorksheetName "15-05-2017 to $(get-date -f dd-MM-yyyy)" -Path "C:\scripts-and-reports\15-05-2017 to $(get-date -f yyyy-MM-dd) Taree PE new clients.xlsx" -Force -Verbose
を経由して出力します。
このプロセス全体を自動化して、毎月1日に実行し、前月全体をレポートすることを目指します。
私は今月のフィルタリングのためにSQLクエリを変更しましたが、出力ファイルのワークシートとファイル名に前の月の名前を含めることができます(たとえば、それは今日)。
私は
invoke-sqlcmd -inputfile "C:\scripts-and-reports\all_new-matters-for-last-month.sql" -serverinstance "PE-SERVER\PRACTICEEVOLVE" -database "PracticeEvolve_c1" |
Select-Object * -ExcludeProperty "RowError","RowState","Table","ItemArray","HasErrors" |
Export-XLSX -WorksheetName "$(get-date AddMonths(-1) -f MMMM)" -Path "C:\scripts-and-reports\$(get-date AddMonths(-1) -f MMMM) Taree PE new clients.xlsx" -Force -Verbose
を試みたが、それは動作しません。有効なDateTimeではない文字列に関するエラーが表示されます。
どこが間違っていて、どうすればよいですか?
+1。 'Get-Date'(すなわち'(Get-Date).AddMonths(-1)| Get-Date -Format 'MMMM'')の2回目の呼び出しで '-Format'を使用することもできます。 '.ToString()'を呼び出すと簡潔になります。 – BACON
@BACONもし簡潔にしたいなら、 'date |%* hs -1 |%* ost * MMMM';) – TessellatingHeckler
答えと説明をありがとう。私はほとんどのスクリプトでアマチュアなので、これは大いに役立ちます! –