Powershell Variablen und Pipes
Ich verstehe hier das Verhalten von Powershell nicht, wenn ich den Befehl
ausführe, erhalte ich z. B. folgende Meldung: 'Ausführen des Vorgangs "Export-Csv" für das Ziel "Anwendung".'
Wenn ich aber nun:
ausführe, erhalte ich folgende Meldung: 'Ausführen des Vorgangs "Export-Csv" für das Ziel "E:\System.Diagnostics.EventLog.LogDisplayName".'.
Kann mir jemand erklären, warum "$p.LogDisplayName" hier zwei unterschiedliche werte liefert?
1
Get-EventLog -LogName * | ForEach-Object {$p = $_; $p.Entries |Export-Csv -path $p.LogDisplayName -Debug}
Wenn ich aber nun:
1
Get-EventLog -LogName * | ForEach-Object {$p = $_; $p.Entries |Export-Csv -path $InventoryPath\$computername\$p.LogDisplayName -Debug}
Kann mir jemand erklären, warum "$p.LogDisplayName" hier zwei unterschiedliche werte liefert?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 297369
Url: https://administrator.de/forum/powershell-variablen-und-pipes-297369.html
Ausgedruckt am: 04.04.2025 um 16:04 Uhr
2 Kommentare
Neuester Kommentar

Moin.
Weil du eine Eigenschaft eines Objektes abfragst und die Shell hier den Punkt hinter der Variablen $p als String interpretiert also nur das $p übernimmt und das ist nunmal ein Objekt des Typs System.Diagnostics.EventLog.LogDisplayName.
Schreibe den Pfad also besser so dann ist klar was die Shell damit machen soll.
oder auch so
Gruß jodel32
Weil du eine Eigenschaft eines Objektes abfragst und die Shell hier den Punkt hinter der Variablen $p als String interpretiert also nur das $p übernimmt und das ist nunmal ein Objekt des Typs System.Diagnostics.EventLog.LogDisplayName.
Schreibe den Pfad also besser so dann ist klar was die Shell damit machen soll.
....... | Export-Csv -path "$InventoryPath\$computername\$($p.LogDisplayName)"
....... | Export-Csv -path ("$InventoryPath\$computername\" + $p.LogDisplayName)
Gruß jodel32