Variablenverwaltung von .Included Skripten
Ich habe mal eine Frage zu Skripten die ich in andere Skripte einbinde. Derzeit habe ich ein Skript in dem ausschließlich Funktionen stecken. Unter anderem eine Funktion zum Laden von Modulen. Diese Funktion liest den aktuellen Zustand aus dem System aus und prüft das gegen einen Modulname der übergeben wird. In meinem Hauptscript rufe ich nun diese Funktion auf. Dabei ist mir aufgefallen, dass bei jedem Funktionsaufruf das lokale System nach seinen vorhanden Modulen abgefragt wird. Bei ein oder zwei Modulen sicherlich kein Problem, aber wenn dort 5 oder 6 Module stehen, dann dauert es einfach zu lange. Deshalb meine Frage, wie ich verhindern kann das jedes Mal nach dem Beenden der Funktion die Variable geleert wird. Hilft es an dieser Stelle nur die Variable als globale Variable zu setzen?
Kann mir vielleicht jemand verraten, wie das Scripthandling von inkludierten Skripten via .Sourcing geschieht. Bleibt das inkludierte Skript die ganze Zeit geladen? Die Frage stelle ich nur, weil es unter Umständen reichen würde den Scope der Variable von global auf script zu ändern.
Gruß
derhoeppi
Kann mir vielleicht jemand verraten, wie das Scripthandling von inkludierten Skripten via .Sourcing geschieht. Bleibt das inkludierte Skript die ganze Zeit geladen? Die Frage stelle ich nur, weil es unter Umständen reichen würde den Scope der Variable von global auf script zu ändern.
Gruß
derhoeppi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 362646
Url: https://administrator.de/forum/variablenverwaltung-von-included-skripten-362646.html
Ausgedruckt am: 25.12.2024 um 04:12 Uhr
3 Kommentare
Neuester Kommentar
Hi.
Zum Dot-Sourcing und Scope von Variablen lese doch bitte erst mal about_Scopes, dort steht alles wesentliche was du dazu wissen musst.
Gruß snap
Hilft es an dieser Stelle nur die Variable als globale Variable zu setzen?
Ja kannst du machen, aber du musst eigentlich nur deine Funktion umbauen das sie ein Array aus Strings akzeptiert dann brauchst du die Funktion nicht mehrfach aufrufen und enumerierst die Module nur einmal für alle abgefragten Module indem du die Namen als Array übergibst.function GetModules([string[]]$names){
#....
}
Gruß snap
Mach aus dem $result ein leeres Array und dem fügst du dann customobjects mit dem Status hinzu, oder eine Hashtable mit den Statuswerten.