Powershell ForEach in ForEach
Hallo,
ich habe folgenden Code:
Leider funktioniert das Script nur, wenn nur ein User in TestGruppe ist. Sobald mehrere enthalten sind, passiert nichts. Gibt auch keine Fehlermeldung.
Wenn ich ein echo in die zweite Schleife baue, sehe ich das er die Einträge verdoppelt. Hängt wahrscheinlich damit zusammen aber sogut kenne ich mich da nicht aus
Wie müsste das denn aussehen, damit es funktioniert?
Danke und Gruß
Bugger
ich habe folgenden Code:
$user = Get-ADGroupMember TestGruppe | Select-Object -ExpandProperty SamAccountName
$Path = "Pfad\zum\Ziel"
$Files = @(
"datei 1.txt"
"datei 2.txt"
"datei 3.txt"
)
foreach ($user in $user) {
echo $user
foreach ($file in $Files) {
if ((Test-Path -Path $Path\$file))
{
(Get-Content $Path\$file) -replace '8000', '9000' | Set-Content $Path\$file
}
}
}
Leider funktioniert das Script nur, wenn nur ein User in TestGruppe ist. Sobald mehrere enthalten sind, passiert nichts. Gibt auch keine Fehlermeldung.
Wenn ich ein echo in die zweite Schleife baue, sehe ich das er die Einträge verdoppelt. Hängt wahrscheinlich damit zusammen aber sogut kenne ich mich da nicht aus
Wie müsste das denn aussehen, damit es funktioniert?
Danke und Gruß
Bugger
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 377135
Url: https://administrator.de/contentid/377135
Ausgedruckt am: 04.12.2024 um 08:12 Uhr
4 Kommentare
Neuester Kommentar
Servus.
Da braucht jemand einen Kaffee oder eine Brille .
Grüße Uwe
Da braucht jemand einen Kaffee oder eine Brille .
foreach ($user in $user)
Das kann nicht funktionieren, du überschreibst deine Variable mit allen SamAccountNames selbst mit der Schleifenvariable. Also nutze einen anderen Namen für die Schleifenvariable oder für die Collection der $users.Grüße Uwe
Beim echo werden mir 12 Einträge angezeigt anstatt nur 2.
Kein Wunder bei dir ist so ziemlich alles durcheinander und die Variablen an den falschen stellen und wenn du die Schleifenvariable im Körper der Schleife nicht mit änderst ... wunder mich das alles gar nicht.$users = Get-ADGroupMember TestGruppe | Select -Expand SamAccountName
$files = "datei 1.txt","datei 2.txt","datei 3.txt"
foreach ($entry in $users) {
write-host $entry
foreach ($file in $Files) {
$path = "Pfad\zum\$entry\Ziel\$file"
if ((Test-Path $path)){
(Get-Content $path) -replace '8000', '9000' | Set-Content $path -Force
}
}
}