Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Powershell liefert statt Arrayinhalt immer den aktuellen Pfad und den Arrayinhalt zurück

Frage Entwicklung Batch & Shell

Mitglied: Andy-M

Andy-M (Level 1) - Jetzt verbinden

24.03.2010 um 08:58 Uhr, 5112 Aufrufe, 1 Kommentar

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:
01.
$lanspeed = Get-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0008" -name RequestedMediaType 
02.
if ($lanspeed.RequestedMediaType -eq 0) 
03.
   {"Autonegotiation ist aktiviert."}
Jetzt möchte ich die Abfrage gern etwas Allgemeiner halten, dazu soll folgender Code dienen:
01.
$substrings = get-childitem 'HKLM:\System\Currentcontrolset\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}' 
02.
$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:
01.
Get-ItemProperty : Der Pfad "C:\temp\powershell\duplex\HKEY_LOCAL_MACHINE\Syste 
02.
m\Currentcontrolset\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0000"  
03.
kann nicht gefunden werden, da er nicht vorhanden ist. 
04.
Bei C:\temp\powershell\duplex\speed.ps1:2 Zeichen:47 
05.
+ $substrings | Foreach-Object {Get-Itemproperty  <<<< $_}
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
Mitglied: Andy-M
25.03.2010 um 13:46 Uhr
Ich konnte das Problem inzwischen selbst lösen indem ich direkt auf den PSPath zugreife.
Das komplette Skript funktioniet jetzt. Allerdings nur für Broadcom- und Intel-Netzwerkkarten.
Ich habe das Skript dann noch ein wenig umgebaut, dass es jetzt folgendermaßen aussieht:

01.
$path = 'HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}' 
02.
$subpath = Get-ChildItem $path 
03.
$values = $subpath | ForEach-Object {Get-Itemproperty $_.pspath} | where-object {$_.RequestedMediaType -ne $null -or $_.SpeedDuplex -ne $null} 
04.
$values | ForEach-Object {if ($_.requestedmediatype -eq 0 -or $_.speedduplex -eq 0 ) {write-host $_.driverdesc ist auf Auto eingestellt.} else {write-host $_.driverdesc ist NICHT auf Auto eingestellt}} 
05.
Start-Sleep -s 10
Viele Grüße

Andy
Bitte warten ..
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte
Windows Systemdateien
gelöst NTFS und die Defragmentierung (29)

Frage von WinLiCLI zum Thema Windows Systemdateien ...