Ich habe Antworten für beide Aufgaben getrennt gefunden, aber nicht zusammen:
Starten Sie powershell als Administrator aus einer Batchdatei
Führen Sie powershell mit Argumenten aus einer Batchdatei
Aber ich möchte powershell als Administrator AND mit Argumenten aus einer Batch-Datei ausführen.
Aus diesem Grund bin ich überzeugt, dass dies bisher kein Duplikat ist.
Dieses Problem ist aus diesem Grund kompliziert:
Ich verwende den Schalter ArgumentList
, um auf den Dateipfad zu zeigen, wenn eine erhöhte Powershell ausgeführt wird. Ich verwende es auch, um Argumente zu übergeben. Separat konnte ich diesen Schalter mit Erfolg verwenden. Es sieht nicht so aus, als könnte ich es für beide Aufgaben verwenden.
So verwende ich Powershell derzeit:
Als Administrator:
%Vor%Mit Argumenten:
%Vor%Was ich versucht habe:
Ich habe versucht, nur meine Argumente zum ArgumentList
hinzuzufügen, wo die Datei übergeben wurde, aber sie wurden nicht erkannt.
Ich habe auch versucht, -Verb RunAs
zur Arbeitsargumentzeile hinzuzufügen, aber Powershell dachte, dass ich versuchte, ein anderes Argument namens Verb zu übergeben, und konnte die Powershell nicht als und admin ausführen.
Ist es möglich, sowohl das Ausführen von Powershell als Administrator als auch mit Argumenten auszuführen, indem ich die Art und Weise, wie ich Argumente übergebe, oder wie ich die Powershell anhöre, umsetze?
Es ist möglich, Ihr Problem ohne Tools von Drittanbietern zu lösen, aber die Lösung ist etwas geheimnisvoll.
Daher sollten Sie stattdessen die hilfreichen Tools elevate32
und elevate64
von Bill Stewart herunterladen, wie in seine Antwort , die die Lösung vereinfachen.
Hier ist ein einfaches Beispiel, das das Get-Date
Cmdlet mit Argumenten in einer erhöhten PowerShell-Sitzung aufruft, die von cmd.exe
(oder einer Batch-Datei) gestartet wurde:
Beachten Sie, dass die Befehlszeile, die an die erhöhte PS-Sitzung übergeben wird, die das intermediate -command
-Argument erstellt, als einzelnes -Argument in eingebettet übergeben wird einfache Anführungszeichen .
Das Zitieren kann schwierig werden, aber dieser Ansatz funktioniert auch beim Aufruf von *.ps1
Dateien im Prinzip:
powershell -command "start-process -verb runas powershell"
ist der invariante Teil der Befehlszeile.
Die verbleibende Zeichenfolge "..."
-enclosed muss eine verschachtelte einzelne Zeichenfolge mit Zitaten enthalten, die PowerShell erkennt (einfache Anführungszeichen sind am einfachsten), die alle Argumente enthalten würde direkt an einen powershell ...
-Befehlszeilenaufruf übergeben.
Auf Ihr Beispiel angewendet:
%Vor%Hinweis: Achten Sie darauf, den vollständigen Pfad für Ihre Skriptdatei zu verwenden , da die erweiterte PS-Sitzung nicht (unbedingt) ausgeführt wird das gleiche Verzeichnis wie die aufrufende Sitzung.
Wenn Sie die Argumente innerhalb der verschachtelten Zeichenfolge zitieren müssen, verwenden Sie \"
:
Sie können dies tun, indem Sie eine kurze Befehlszeilen-ausführbare Datei mit dem Namen Elevate32.exe (oder Elevate64.exe für die 64-Bit-Version) verwenden. Sie können es hier bekommen:
Ссылка (ElevationToolkit1.zip)
Beispiel:
%Vor% Alles nach --
ist die Befehlszeile, die Sie erhöhen möchten.
Tags und Links powershell cmd batch-file