Ich habe eine test.bat, um eine test.ps1 mit Administratorrechten und uneingeschränkten Richtlinien auszuführen, und beide befinden sich im selben Ordner (lokaler PC), aber die bat führt ps1 nicht aus. Was ist falsch?
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList 'Set-ExecutionPolicy Unrestricted -Force -File" "% ~ dpn0.ps1" "' -Verb RunAs}"
Und mein Skript ist ähnlich wie diese
windows
powershell
batch-file
BrianC
quelle
quelle
Antworten:
Sie haben mehrere Probleme:
ArgumentList
nimmt eine Reihe von Zeichenfolgen (string[]
), keine durch Leerzeichen getrennte Liste. Um ein statisches Array von Zeichenfolgen zu übergeben, trennen Sie die Zeichenfolgenelemente durch Kommas.-command
und ein-file
, und Sie können nicht beide verwenden-file
argument und a-command
Argument in einem einzelnen PowerShell.exe-Aufruf.Set-ExecutionPolicy
) ohne Angabe der-command
Streit. Verwenden Sie PowerShell.exe, um die Ausführungsrichtlinie für die Powershell.exe-Sitzung festzulegen, die Sie ausführen möchten-ExecutionPolicy
Parameter, anstatt zu versuchen, die auszuführenSet-ExecutionPolicy
Befehl.Hier ist die korrigierte Version Ihres Befehls:
quelle
write-host "Hi!"
gefolgt vonread-host
Wenn Sie die Eingabetaste drücken, können Sie feststellen, ob der Start fehlerhaft ist oder ob ein Problem mit dem von Ihnen ausgeführten PS1-Skript vorliegt.