2017-07-17 10 views
0

を受け入れることを見つけることができない私は、プロセスを強制終了するには、次のPowerShellスクリプトを作成しました:を取得-WmiObjectコマンドを:位置パラメータ引数

$oProcs = Get-WmiObject Win32_Process -filter "commandline like '%G:\\TCAFiles\\Users\\Admin\\2155\\Unturned.exe%'";foreach ($oProc in $oProcs){Stop-Process $oProc.Handle} 

上記のスクリプトは、私が作るしようとしているがとき、正常に動作しますスクリプトはコマンドプロンプトから起動し、失敗します。

powershell -Mta -NoProfile -Command "$oProcs = Get-WmiObject Win32_Process -filter "commandline like '%G:\TCAFiles\Users\Admin\2155\Unturned.exe%'";foreach ($oProc in $oProcs){Stop-Process $oProc.Handle}" 

これは、次のエラーが発生:

 
Get-WmiObject : A positional parameter cannot be found that accepts argument 
'%G:\TCAFiles\Users\Admin\2155\Unturned.ex e%'. 
At line:1 char:11 
+ $oProcs = Get-WmiObject Win32_Process -filter commandline like '%G:\T ... 
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (:) [Get-WmiObject], ParameterBindingException 
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.GetWmiObjectCommand 

私はこのエラーが何を意味するかまたはそれを解決するかどうかはわかりません。

+2

問題は、エスケープされていない二重引用符で囲まれています。しかし、 'Get-Process | Where-Object {$ _。パス-eq 'G:¥TCAFiles¥Users¥Admin¥¥2155¥Unturned.exe'} Stop-Process'または単に 'Get-Process Unturned | Stop-Process' – BenH

+2

'cmd.exe'から実行する必要はありません。代わりにPowerShellプロンプトから実行します。 –

答えて

0

引数として渡すPowerShellコード内の二重引用符をエスケープする必要があります。現時点では、コマンド引数は "-filter"の後で終了します。

あなたは、バックスラッシュを使用して二重引用符をエスケープすることができますCMDからこれを実行している場合:

powershell -Mta -NoProfile -Command "$oProcs = Get-WmiObject Win32_Process -filter \"commandline like '%G:\TCAFiles\Users\Admin\2155\Unturned.exe%'\";foreach ($oProc in $oProcs){Stop-Process $oProc.Handle}" 

それとも、PowerShellでこれを実行している場合は、バッククォートまたは別の二重引用符でそれを付加することで、それらをエスケープすることができます:

powershell -Mta -NoProfile -Command "$oProcs = Get-WmiObject Win32_Process -filter ""commandline like '%G:\TCAFiles\Users\Admin\2155\Unturned.exe%'"";foreach ($oProc in $oProcs){Stop-Process $oProc.Handle}" 
関連する問題