ich folgende Powershell-Skript erstellt habe, ein Verfahren zu töten:Get-WmiObject: Ein Positionsparameter nicht gefunden werden kann, das Argument akzeptiert
$oProcs = Get-WmiObject Win32_Process -filter "commandline like '%G:\\TCAFiles\\Users\\Admin\\2155\\Unturned.exe%'";foreach ($oProc in $oProcs){Stop-Process $oProc.Handle}
Das obige Skript funktioniert gut, aber wenn ich versuche zu machen Das Skript starten von Command Prompt schlägt fehl.
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}"
Dies führt zu dem folgenden Fehler:
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
Ich bin mir nicht sicher, was dieser Fehler bedeutet oder wie es zu lösen.
Ihr Problem ist mit unescaped doppelte Anführungszeichen. Aber es wäre einfacher Get-Process | zu verwenden Where-Objekt {$ _. Pfad -eq 'G: \ TCAFiles \ Users \ Admin \ \ 2155 \ Unturned.exe'} | Stop-Process' oder nur 'Get-Process Unturned | Stop-Process' – BenH
Sie müssen es nicht von 'cmd.exe' ausführen. Führen Sie sie stattdessen über die PowerShell-Eingabeaufforderung aus. –