2017-04-13 4 views
-1

Ich versuche PowerShell von CMD mit diesem Befehl zu starten.Wie kann auf die Ergebnisse des Befehls powershell.exe in der PowerShell-Sitzung zugegriffen werden?

powershell.exe -NoProfile -NoExit -command "& {$someVar = 'test'}" 

Wie greife ich auf die Variable someVar in der Powershell. MSDN sagt, dass "die Ergebnisse des Skripts als deserialized XML-Objekte, nicht Live-Objekte an die übergeordnete Shell zurückgegeben werden". .

+2

"ich versuche, Powershell von CMD zu starten" - warum? –

+0

Wie läuft der Rest Ihres Codes? Eine einzige Codezeile ohne weiteren Kontext hilft uns nicht weiter. –

+0

Hallo Bill, James: Wir haben eine Anwendung, die einen REST-Aufruf an das Identitätsmanagementsystem vornimmt und einige Werte erhält (Beispiel: Benutzername, Passwort für eine Anwendung basierend auf der Berechtigung des Benutzers, der die Anwendung ausführt). Wir versuchen, eine Option zu haben, damit Benutzer, insbesondere ein Administrator, auf eine Schaltfläche klicken können, die eine PowerShell-Sitzung mit allen bereits verfügbaren Variablen startet. – Rakesh

Antwort

0

& {$someVar = 'test'}" führt den Skriptblock in einem lokalen Bereich aus, der gelöscht wird, wenn der Scriptblock ausgeführt wurde.

Sie müssen die Variable in dem $global -scope (Session weit)

CMD> powershell.exe -NoProfile -NoExit -command "& {$global:someVar = 'test'}" 

PS> $someVar 
test 

oder verwendet Punkt Sourcing . <script/scriptblock> erstellen, um die Skript excecute, die alles im aktuellen Bereich (Sitzung in diesem Fall läuft)

CMD> powershell.exe -NoProfile -NoExit -command ". {$someVar = 'test'}" 

PS> $someVar 
test 

Lesen Sie mehr über Variablen Scopes here

+0

Vielen Dank Frode F Ich bin wirklich neu in PowerShell, so dass ich nicht wusste, dass diese Befehle im lokalen Bereich ausgeführt werden. Ich werde jetzt die Bereiche lesen. Danke noch einmal. – Rakesh

Verwandte Themen