コマンドプロンプト→PowerShell -Command へ文字列が渡される過程で"
が消えたりすることが原因だと思われますが、特定が少々大変ですね。
今回に限って言えば、文字列を"
ではなく、'
で囲む、"`n"
を[char]10
で置き換える、で通るようになりました。
cmd
1powershell -Command "Get-EventLog -Logname Application -EntryType Error,Warning,FailureAudit | Select-Object TimeGenerated,EntryType,UserName,EventID,@{Name='Message';Expression={$_.Message.Replace([char]10,';')}} | Export-CSV -Encoding Default C:\temp\APPlog.csv"
あるいは、-EncodedCommand
を使ってBase-64 エンコードの文字列のコマンドを指定してもよいかもしれません。
powershell
1# Base-64 変換
2[string]$cmdTxt =@'
3Get-EventLog -Logname Application -EntryType Error,Warning,FailureAudit | Select-Object TimeGenerated,EntryType,UserName,EventID,@{Name="Message";Expression={$_.Message.Replace("\n",";")}} | Export-CSV -Encoding Default C:\temp\APPlog.csv
4'@
5
6[convert]::ToBase64String(
7 [System.Text.Encoding]::Unicode.GetBytes($cmdTxt)
8)
cmd
1powershell -EncodedCommand RwBlAHQALQBFAHYAZQBuAHQATABvAGcAIAAtAEwAbwBnAG4AYQBtAGUAIABBAHAAcABsAGkAYwBhAHQAaQBvAG4AIAAtAEUAbgB0AHIAeQBUAHkAcABlACAARQByAHIAbwByACwAVwBhAHIAbgBpAG4AZwAsAEYAYQBpAGwAdQByAGUAQQB1AGQAaQB0ACAAfAAgAFMAZQBsAGUAYwB0AC0ATwBiAGoAZQBjAHQAIABUAGkAbQBlAEcAZQBuAGUAcgBhAHQAZQBkACwARQBuAHQAcgB5AFQAeQBwAGUALABVAHMAZQByAE4AYQBtAGUALABFAHYAZQBuAHQASQBEACwAQAB7AE4AYQBtAGUAPQAiAE0AZQBzAHMAYQBnAGUAIgA7AEUAeABwAHIAZQBzAHMAaQBvAG4APQB7ACQAXwAuAE0AZQBzAHMAYQBnAGUALgBSAGUAcABsAGEAYwBlACgAIgBcAG4AIgAsACIAOwAiACkAfQB9ACAAfAAgAEUAeABwAG8AcgB0AC0AQwBTAFYAIAAtAEUAbgBjAG8AZABpAG4AZwAgAEQAZQBmAGEAdQBsAHQAIABDADoAXAB0AGUAbQBwAFwAQQBQAFAAbABvAGcALgBjAHMAdgA=
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。