Powershell liefert statt Arrayinhalt immer den aktuellen Pfad und den Arrayinhalt zurück
Hallo zusammen,
ich beschäftige mich gerade ein wenig mit der Powershell. Nachdem ich mich in die Grundlagen eingearbeitet habe möchte ich jetzt ein kleines Beispielskript schreiben.
Mein Kollege hat mich auf die Idee gebracht ein Script zu schreiben, dass aus der Registry ausliest, ob die Speed&Duplex-Einstellung der Netzwerkkarte auf "Auto" steht oder nicht.
Mit folgendem Code kann ich das ganze auch für meinen Rechner passend abfragen:
Jetzt möchte ich die Abfrage gern etwas Allgemeiner halten, dazu soll folgender Code dienen:
Was ich mir eigentlich als Ausgabe wünschen würde wäre eine Liste der Werte der Subkeys von {4D36E972-...}. Daraus könnte man dann abfragen ob es das Attribut "RequestedMediaType" (für Broadcom-Karten) oder "SpeedDuplex" (für Intel-Karten) gibt und welche Werte dort gesetzt sind.
Leider bekomme ich jedoch als Ausgabe immer folgendes: "Aktuelles Arbeitsverzeichnis\Arrayinhalt" also zB: C:\HKLM\System\und\so\weiter
Hier noch beispielhaft die Fehlermeldung:
Dieser Fehler taucht dann für alle Objekte unterhalb von HKLM:\...{4D36E972-...} auf.
Die Fehlermeldung ist klar, den Pfad gibt es tatsächlich nicht. Wenn ich mir aber nur das Array ausgeben lasse, dass gibt er mir den Pfad richtig zurück.
Ich hoffe mir kann jemand einen Tipp geben wo ich den Fehler gemacht habe, bzw. wie ich ihn lösen kann. Eine ausgiebige Googlesuche hat leider zu keiner Erleuchtung geführt.
Viele Grüße
Andy
ich beschäftige mich gerade ein wenig mit der Powershell. Nachdem ich mich in die Grundlagen eingearbeitet habe möchte ich jetzt ein kleines Beispielskript schreiben.
Mein Kollege hat mich auf die Idee gebracht ein Script zu schreiben, dass aus der Registry ausliest, ob die Speed&Duplex-Einstellung der Netzwerkkarte auf "Auto" steht oder nicht.
Mit folgendem Code kann ich das ganze auch für meinen Rechner passend abfragen:
$lanspeed = Get-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0008" -name RequestedMediaType
if ($lanspeed.RequestedMediaType -eq 0)
{"Autonegotiation ist aktiviert."}
Jetzt möchte ich die Abfrage gern etwas Allgemeiner halten, dazu soll folgender Code dienen:
$substrings = get-childitem 'HKLM:\System\Currentcontrolset\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}'
$substrings | Foreach-Object {Get-Itemproperty $_}
Was ich mir eigentlich als Ausgabe wünschen würde wäre eine Liste der Werte der Subkeys von {4D36E972-...}. Daraus könnte man dann abfragen ob es das Attribut "RequestedMediaType" (für Broadcom-Karten) oder "SpeedDuplex" (für Intel-Karten) gibt und welche Werte dort gesetzt sind.
Leider bekomme ich jedoch als Ausgabe immer folgendes: "Aktuelles Arbeitsverzeichnis\Arrayinhalt" also zB: C:\HKLM\System\und\so\weiter
Hier noch beispielhaft die Fehlermeldung:
Get-ItemProperty : Der Pfad "C:\temp\powershell\duplex\HKEY_LOCAL_MACHINE\Syste
m\Currentcontrolset\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0000"
kann nicht gefunden werden, da er nicht vorhanden ist.
Bei C:\temp\powershell\duplex\speed.ps1:2 Zeichen:47
+ $substrings | Foreach-Object {Get-Itemproperty <<<< $_}
Die Fehlermeldung ist klar, den Pfad gibt es tatsächlich nicht. Wenn ich mir aber nur das Array ausgeben lasse, dass gibt er mir den Pfad richtig zurück.
Ich hoffe mir kann jemand einen Tipp geben wo ich den Fehler gemacht habe, bzw. wie ich ihn lösen kann. Eine ausgiebige Googlesuche hat leider zu keiner Erleuchtung geführt.
Viele Grüße
Andy
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 139010
Url: https://administrator.de/forum/powershell-liefert-statt-arrayinhalt-immer-den-aktuellen-pfad-und-den-arrayinhalt-zurueck-139010.html
Ausgedruckt am: 28.04.2025 um 19:04 Uhr
1 Kommentar