1

次のように、powershell コマンドを powershell.exe に渡すことができます。

PowerShell -Command {Get-EventLog -LogName security}

しかし、コマンドに or が含まれている場合はどうなる{でしょ}うか? そのような:

dir z:\test -fi "*.tmp" -r | ?{$_.creationtime -le (Get-Date).adddays(-30)} | del

ありがとう。

4

4 に答える 4

2

コマンド パラメーターは、スクリプト ブロックと文字列を受け入れることができます。上の例では、 {} はスクリプト ブロックを示します。そのため、コマンドを {} ではなく "" で囲みます。

PowerShell.exe -Command "dir z:\test -fi "*.tmp" -r | ?{$_.creationtime -le (Get-Date).adddays(-30)} | del"

覚えておくべき唯一のことは、上記のように文字列として指定する場合、 Command は指定する最後の引数でなければならないということです。それ以降はすべて実行したいコマンドとして解釈されるからです。

于 2013-02-17T13:59:02.760 に答える
1

このような:

PowerShell.exe -Command "dir z:\test -fi "*.tmp" -r | ?{$_.creationtime -le (Get-Date).adddays(-30)} | del"
于 2013-02-17T07:39:23.670 に答える
1

別の可能性は、コマンドをエンコードすることです:

$command = "dir z:\test -fi '.tmp' -r | ?{$_.creationtime -le (Get-Date).adddays(-30)} | del "
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)

powershell.exe -encodedCommand $encodedCommand
于 2013-02-17T10:28:52.893 に答える
0

Invoke-Expressionの使用はオプションになります

PowerShell -Command {Invoke-Expression "dir z:\test -fi `"*.tmp`" -r | ?{`$_.creationtime -le (Get-Date).adddays(-30)} | del"} 
于 2013-02-17T10:21:13.260 に答える