Powershell Übergabe von Variablen zwischen verschiedenen Skripten
Hallo,
folgende Thematik habe ich gerade. Ich habe ein Skript. In diesem habe ich eine Variable, die ich global definiert habe. In dem Skript wird ein weiteres Skript mit Invoke-Expression aufgerufen, damit ich innerhalb eines Gültigkeitsbereiches bleibe. Nun ist mein Problem beim Aufruf des zweiten Skriptes, dass ich dafür die Powershell erneut starten muss, weil ich es nur mit dem Pfad nicht hinbekommen habe. Mit dem erneuten Start der Powershell bin ich natürlich außerhalb des Gültigkeitsbereiches.
Gibt es eine Möglichkeit wie ich Variablen von einem Skript ins nächste Übergebe kann oder wie kann ich ein zweites Skript im selben Gültigkeitsbereich aufrufen.
Gruß
derhoeppi
folgende Thematik habe ich gerade. Ich habe ein Skript. In diesem habe ich eine Variable, die ich global definiert habe. In dem Skript wird ein weiteres Skript mit Invoke-Expression aufgerufen, damit ich innerhalb eines Gültigkeitsbereiches bleibe. Nun ist mein Problem beim Aufruf des zweiten Skriptes, dass ich dafür die Powershell erneut starten muss, weil ich es nur mit dem Pfad nicht hinbekommen habe. Mit dem erneuten Start der Powershell bin ich natürlich außerhalb des Gültigkeitsbereiches.
Gibt es eine Möglichkeit wie ich Variablen von einem Skript ins nächste Übergebe kann oder wie kann ich ein zweites Skript im selben Gültigkeitsbereich aufrufen.
Gruß
derhoeppi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 283878
Url: https://administrator.de/contentid/283878
Ausgedruckt am: 26.11.2024 um 07:11 Uhr
7 Kommentare
Neuester Kommentar
Da gibts mehrere Möglichkeiten:
Via Skriptblock
Oder du übergibst deinem zweiten Skript Parameter (wichtig param() muss ganz am Anfang des Skriptes stehen)
Zweites Skript
Erstes Skript
oder du nutzt einfach wieder Dot-Sourcing dann wandern deine lokalen Variablen (Vorsicht das du dir keine überschreibst) auch in die Session des zweiten Skripts:
https://www.sepago.de/blog/2013/12/23/powershell-scripts-funktionen-und- ...
Gruß jodel32
Via Skriptblock
$secondscript = {
# hier dein zweites Skript als Skriptblock in deinem ersten
}
# Aufrufen des Skriptblocks mit "dot-sourcing"
. $secondscript
Zweites Skript
param(
$parameter1,
$parameter2
)
write-host $parameter1
write-host $parameter2
Erstes Skript
# Aufruf des zweiten Skripts mit Parametern
&'C:\zweitesSkript.ps1' "Parameter1" "Parameter2"
. 'C:\zweitesSkript.ps1'
Gruß jodel32
Guckst du in mein Kommentar oben, nutze die Parameterübergabe , siehe zweiter Codeblock oben, das ist die vernünftigste Variante.
Eine ganz neue Powershell-Session kann man auch mit start-process Powershell starten wenn man es braucht. Damit lassen sich auch Skripte starten, indem man sie als Argument übergibt.
Eine ganz neue Powershell-Session kann man auch mit start-process Powershell starten wenn man es braucht. Damit lassen sich auch Skripte starten, indem man sie als Argument übergibt.
Nein.
Dann arbeite mit globalen Variablen wenn du sie aus beiden Skripten brauchst und sie in der selben Session laufen ...
Erste Stunde Powershell:
about_scopes
Dann arbeite mit globalen Variablen wenn du sie aus beiden Skripten brauchst und sie in der selben Session laufen ...
$global:var1 = "xyz"
Erste Stunde Powershell:
about_scopes
Zitat von @derhoeppi:
Okay mit den globalen Variablen arbeite ich bereits. Ich hätte gehofft, dass ich auch dieses umgehen kann.
Wenn du in solche Zwickmühlen kommst ist meist der Aufbau/Aufteilung der Skripte suboptimal und sollte überdacht/konsolidiert werden.Okay mit den globalen Variablen arbeite ich bereits. Ich hätte gehofft, dass ich auch dieses umgehen kann.