Where-Object in Array bei Powershell
Hallo,
hab ein Problem mit der Powershell und finde derzeit nicht den Fehler oder die Lösung.
Folgenden Code möchte ich ausführen:
Get-Partition | Where-Object { $_.AccessPaths -contains $disk_id.Name} | ft disknumber,accesspaths}
Wenn ich den Befehl manuell eingeben und bei $disk_id.Name den Wert "C:\Users\Vorname Nachname\" eintrage, erhalte ich den gewünschten Wert, alles gut.
Nutze ich die Variable (diese weißt den selben Wert aus) - erhalte ich keine Fehlermeldung aber einen falschen Wert, nämlich die Eintragungen ohne Accesspaths.
Bei Get-Partition ist der Wert Accesspaths ein Array und zeigt einmal den Ort der Partition im Klartext und einmal mit einer GUID an. Ich habe mit dem Wert NAME und DEVICEID schon probiert, aber immer selbes Ergebnis erhalten. Sobald ich die Variable nutze, kommt kein Wert oder der falsche, sobald ich den Wert manuell eintrage, erhalte ich die korrekte Ausgabe.
Neben -contains habe ich auch schon -in probiert - aber das macht keinen Unterschied.
Hat jemand eine Idee, was ich dabei übersehe?
Grüße Forseti
hab ein Problem mit der Powershell und finde derzeit nicht den Fehler oder die Lösung.
Folgenden Code möchte ich ausführen:
Get-Partition | Where-Object { $_.AccessPaths -contains $disk_id.Name} | ft disknumber,accesspaths}
Wenn ich den Befehl manuell eingeben und bei $disk_id.Name den Wert "C:\Users\Vorname Nachname\" eintrage, erhalte ich den gewünschten Wert, alles gut.
Nutze ich die Variable (diese weißt den selben Wert aus) - erhalte ich keine Fehlermeldung aber einen falschen Wert, nämlich die Eintragungen ohne Accesspaths.
Bei Get-Partition ist der Wert Accesspaths ein Array und zeigt einmal den Ort der Partition im Klartext und einmal mit einer GUID an. Ich habe mit dem Wert NAME und DEVICEID schon probiert, aber immer selbes Ergebnis erhalten. Sobald ich die Variable nutze, kommt kein Wert oder der falsche, sobald ich den Wert manuell eintrage, erhalte ich die korrekte Ausgabe.
Neben -contains habe ich auch schon -in probiert - aber das macht keinen Unterschied.
Hat jemand eine Idee, was ich dabei übersehe?
Grüße Forseti
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4823121661
Url: https://administrator.de/contentid/4823121661
Ausgedruckt am: 25.11.2024 um 13:11 Uhr
6 Kommentare
Neuester Kommentar
Der Code enthält falsche Bindestriche (Gedankenstriche) im Where-Object ... Des weiteren musst du die Anzahl in $disk_id auf ein Element beschränken oder wenn mehrere die per Regex Oder Match zusammenfügen und per -match vergleichen.
Eine Lehre für die Web Copy n Paster Fraktion Code doch besser gleich ganz selbst zu schreiben, dann entfällt das Kopfkratzen und es bleiben auch noch ein paar Haare am Ende des Tages über .