Powershell Scriptblock funktioniert nicht mehr?!
Hallo,
ich habe eben durch zufall festgestellt das bei mir seit 6 Tagen ein stück in meinen Powershell scripten nicht mehr funktioniert. und zwar habe ich am Anfang eines Scriptes immer:
um dann später an diversen stellen im Script mit
die aktuellen zeiten in die jeweiligen variablen zu bekommen und dann für vergleiche etc. verwende. mir ist schon klar das es sicherlich eine bessere lösung gibt aber es hat funktioniert und das war für mich erstmal das wichtigste.
bisher war der Output (wenn angefordert durch die variablen) dann immer folgender:
10
6
6
2019
(anhand des heutigen Tages)
seit ein paar tagen funktioniert das ganze aber nicht mehr, warum auch immer. Das Datum wird nicht mehr in die Variable eingetragen.
Kann mir einer helfen?
Danke schonmal im voraus
ich habe eben durch zufall festgestellt das bei mir seit 6 Tagen ein stück in meinen Powershell scripten nicht mehr funktioniert. und zwar habe ich am Anfang eines Scriptes immer:
$aktuelle_stunde_tag_jahr = {$aktuellestunde = (Get-Date).Hour
$aktuellertag = (Get-Date).Day
$aktuellermonat = (Get-Date).Month
$aktuellesjahr = (Get-Date).Year}
&$aktuelle_stunde_tag_jahr
bisher war der Output (wenn angefordert durch die variablen) dann immer folgender:
10
6
6
2019
(anhand des heutigen Tages)
seit ein paar tagen funktioniert das ganze aber nicht mehr, warum auch immer. Das Datum wird nicht mehr in die Variable eingetragen.
Kann mir einer helfen?
Danke schonmal im voraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 459120
Url: https://administrator.de/forum/powershell-scriptblock-funktioniert-nicht-mehr-459120.html
Ausgedruckt am: 19.02.2025 um 22:02 Uhr
6 Kommentare
Neuester Kommentar

das ganze aber nicht mehr, warum auch immer. Das Datum wird nicht mehr in die Variable eingetragen.
&$aktuelle_stunde_tag_jahr
Stichwort Dot-Sourcing, ein & oder ein . (Punkt) macht beim Einbinden von Scriptblocks und Funktionen beim Variable-Scope einen großen Unterschied:&$aktuelle_stunde_tag_jahr
https://devblogs.microsoft.com/scripting/how-to-reuse-windows-powershell ...
http://joinpowershell.de/de/2017/01/16/powershell-was-und-warum-dot-sou ...
Btw. du kannst Werte aus Skriptblocks auch per return zurückgeben, genau so wie bei Funktionen
Würde ich dir als Lektüre mal empfehlen:
About Scopes

Das sieht sehr komplex aus das Thema :-o
Nö, man muss es nur einmal lesen und verstehen.Nehm den Punkt zum Aufrufen, dann nimmst du die Variablen des Skriptblocks mit in die aktuelle Session.
Mit dem & Führst du den Skriptblock in einem anderen Kontext aus und deswegen sind die Variablen nicht im aktuellen Kontext sichtbar.
An diesem Beispiel siehst du warum
https://tio.run/##K8gvTy0qzkjNyfn/X6UktbhEwVahmktBpSyxCMhKTy3RTUksSeWq5V ...
$test = {
$var = get-date
}
& $test
write-host "Test ausgeführt mit & Var = $var"
. $test
write-host "Test ausgeführt mit . Var = $var"

Ich verstehe noch immer nicht wieso es MONATE lang so funktionierte und dann auf einmal nicht.
Wir kennen deine Skripte ja nicht. Fakt ist das es so niemals funktioniert haben kann zumindest nicht so wie es oben steht.Wie gesagt, les dir mal den Abschnitt about_scopes durch. Denke da liegt dein Fehler begraben, das missachten viele Powershell-Anfänger leider obwohl dieser Artikel absolutes Pflichtprogramm für jeden Powersheller sein sollte. Außerdem Variablendeklaration durch $script:var und $global:var solltest du dir mal ansehen.
Btw. das jedes mal in den Kopf jedes Skriptes zu schreiben ist auch nicht gerade effizient