Aufruf von PowerShell aus der charge und dem abrufen des neuen Wertes eine temporäre Umgebungsvariable im script?
Ich hoffe, der Titel ist prägnant, aber nur für den Fall:
Rufe ich ein PowerShell-Skript aus einer batch-Datei. Ich will das PowerShell-Skript, um den Wert einer environment-variable ist, und diesen neuen Wert dann in die batch-Datei, wenn Sie das PowerShell-Skript beendet.
Ich weiß, dass es möglich ist, eine Umgebungsvariable festlegen, die Verwendung von $env in der PowerShell, aber der Wert nicht beibehalten, wenn Sie das PowerShell-Skript beendet wird. Ich denke, das ist wahrscheinlich, weil PowerShell ausgeführt wird in einem separaten Prozess.
Ich bin mir bewusst, dass ich zurückkehren kann, eine exit-code und die Benutzung von %ErrorLevel%, aber das wird nur geben Sie mir zahlen, und es wird ein Konflikt, der seit 1 zeigt eine PowerShell-Ausnahme eher als eine nützliche Zahl ist.
Nun, hier ist die Einschränkung: ich will nicht die environment-variable bestehen. Das heißt, ich will nicht, dass es definiert werden, die für den Benutzer oder das system, und deshalb will ich es nicht zur Verfügung steht, sobald Sie die batch-Datei beendet. Letztlich möchte ich einfach nur zu kommunizieren, die Ergebnisse aus einem PowerShell-script an den aufrufenden batch-Datei.
Ist das möglich?
Vielen Dank im Voraus 🙂
Nick
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bekommen Keith ' s Idee mit stdout arbeiten, können Sie invoke powershell aus Ihrem batch-Skript wie dieses:
Ein wenig umständlich, aber es funktioniert:
Ich weiß, es ist ein bisschen spät, um diese Frage zu beantworten, aber ich möchte es versuchen nur im Fall einer braucht mehr detaillierte Lösung. So, hier geht es.
Erstellte ich eine batch-Funktion, die würde execute ps script für Sie und einen Wert zurückgeben, so etwas wie dieses:
Nun, als ein Beispiel zu verwenden:
Dies wird angezeigt, auf Konsole hast Du es
Als komplizierteres Beispiel möchte ich hinzufügen:
Nehmen wir an, wir möchten zu überprüfen, ob eine VM nach Oben oder Unten, das heißt, wenn es eingeschaltet oder ausgeschaltet ist, so können wir Folgendes tun:
Nun, wie zu verwenden :CheckMachineUpOrDown Funktion?
Folgen Sie einfach diesem Beispiel:
Dieser wird angezeigt, wenn die VM eingeschaltet ist oder wenn die Maschine Ausgeschaltet ist.
Hoffe, das ist hilfreich.
Dank
Die meisten geradlinig Art zu erfassen Ergebnisse von PowerShell ist die Verwendung von stdout in PowerShell. Zum Beispiel, das spart das Datum der d env var cmd.exe