Powershell Voodoo - Cacheproblem?
Moin Kollegen.
Nein, kein Voodoo, kein Feng-Shui, nur der übliche Ärger mit (vermutlich) einem Bug.
Wie kann es bitte sein, dass ein Skript mir eine Variable ausgibt mit
Nutzer1
Nutzer2
aber dann bei der Weiterverarbeitung auch Nutzer3 mitnimmt?
Also: Variable wird gebaut:
und in folgendem Befehl auch korrekt ausgegeben:
aber dann wird falsch weitergemacht; Nutzer3 kommt hinzu:
Das Witzige: es ist immer der selbe Nutzer3, der hinzukommt, alle anderen sind stets korrekt.
Nutzer3 war beim allerersten Lauf des Skriptes auch korrekterweise dabei, dann wurde aber die zu prüfende Datei angelegt und seitdem darf das nicht passieren (und die zweite Zeile hier gezeigte Zeile macht es ja auch richtig).
Was ist das bitte?
Nein, kein Voodoo, kein Feng-Shui, nur der übliche Ärger mit (vermutlich) einem Bug.
Wie kann es bitte sein, dass ein Skript mir eine Variable ausgibt mit
Nutzer1
Nutzer2
aber dann bei der Weiterverarbeitung auch Nutzer3 mitnimmt?
Also: Variable wird gebaut:
$names=(gci $path).name
foreach ($name in $names) {if ((test-path -path "$path\$name\file.txt") -eq $false) {echo $name}}
foreach ($name in $names) {if ((test-path -path "$path\$name\file.txt") -eq $false) {Send-MailMessage -From 'bla@blub' -To "$name@wurst.de"-Subject "Betreffzeile" -SmtpServer Mailserver -Body "test"}}
Das Witzige: es ist immer der selbe Nutzer3, der hinzukommt, alle anderen sind stets korrekt.
Nutzer3 war beim allerersten Lauf des Skriptes auch korrekterweise dabei, dann wurde aber die zu prüfende Datei angelegt und seitdem darf das nicht passieren (und die zweite Zeile hier gezeigte Zeile macht es ja auch richtig).
Was ist das bitte?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 22616951084
Url: https://administrator.de/forum/powershell-voodoo-cacheproblem-22616951084.html
Ausgedruckt am: 07.04.2025 um 18:04 Uhr
8 Kommentare
Neuester Kommentar
Das Problem liegt daran, dass die dritte Zeile die Liste der Namen noch einmal kopiert. Dies führt dazu, dass Nutzer3 zweimal in der Liste enthalten ist.
Um das Problem zu beheben, musst du die Liste der Namen nicht kopieren. Du kannst die foreach-Schleife so ändern, dass sie die Liste direkt verwendet.
Versuch mal:
Um das Problem zu beheben, musst du die Liste der Namen nicht kopieren. Du kannst die foreach-Schleife so ändern, dass sie die Liste direkt verwendet.
Versuch mal:
$names = (gci $path).name
foreach ($name in $names) {
if ((test-path -path "$path\$name\file.txt") -eq $false) {
Send-MailMessage -From 'bla@blub' -To "$name@wurst.de"-Subject "Betreffzeile" -SmtpServer Mailserver -Body "test"
}
}

Da sind ein paarFehler drin, es fehlt bspw. die Angabe des Parameters -Directory damit nur Ordner und keine Dateien damit aufgelistet werden , besser so
Gruß Sid.
foreach ($dir in Get-ChildItem -LiteralPath $path -Directory) {
if (!(test-path -LiteralPath "$($dir.Fullname)\file.txt")) {
Send-MailMessage -From 'bla@blub' -To "$($dir.Name)@wurst.de"-Subject "Betreffzeile" -SmtpServer Mailserver -Body "test"
}
}