#2 Disable NIC Power Save Mode mit Powershell
This post might contain affiliate links. We may earn a commission if you click and make a purchase. Your support is appreciated!
Weiter geht es mit dem zweiten Teil meiner Powershell-Reihe:
Diesmal möchte ich den Power Save Mode der Netzwerkkarten abschalten, damit diese Funktion nicht „plötzlich“ zum Verhängnis wird. In Verbindung mit dem „Balanced“-Powerplan kann Windows der Meinung sein, dass die Netzwerkkarte bei Inaktivität in den „Sleep“-Mode versetzt wird. Somit verliert der SQL Server plötzlich seine (inaktiven) Connections, zahlreiche Applikationen werden diese Trennungen nicht mögen. Noch viel schlimmer in einem Cluster oder mit AlwaysOn Availability-Groups, plötzlich ist der Heartbeat weg und das Cluster schwenkt.
Widersprüchliches in High Performance
Auch wenn man meinen würde, dass dieser Power Save Mode der Netzwerkkarte abgeschaltet wird, wenn man den Powerplan auf „High Performance“ setzt. Nein, laut Aussage eines Microsoft PFE Team-Members (Oktober 2016) hilft auch dies nicht:
• If the server is set to High Performance – Windows places the system in the highest performance state and disables the dynamic scaling of performance in response to varying workload levels. Therefore, special care should be taken before setting the power plan to High Performance as this can increase power consumption unnecessarily when the system is underutilized. • We will have to disable “Allow the computer to turn off this device to save power” option of Power management from NIC. Setting the server in High Performance would not stop the NIC to go in sleep mode whenever there is no activity, as that is a setting at an OS level. The setting on NIC will take preference in this situation.
Somit hilft nur das Abschalten dieses Power Save Modes an allen Netzwerkkarten!
Diese Powershell-Lösung habe ich mir nicht selber ausgedacht, mit dieser hatte ich die wenigsten Probleme, sie funktionierte auf zahlreichen Maschinen.
Die Lösung von Ingmar Verheij habe ich angepasst von WiFi auf LAN-Adapter gemäß iana.org, lässt sich sicherlich auch auf andere Adapter anpassen.
Was macht das Powershell Snippet?
Das Skript sucht sich alle installierten Netzwerkkarten und überprüft, ob diese vom Typ „6“ (ethernetCsmacd(6), for all ethernet-like interfaces, regardless of speed, as per RFC3635) sind. Wurde eine entsprechende Ethernet-Netzwerkkarte gefunden wird für diese in der Registry der Wert entsprechend geändert, so dass die Netzwerkkarte nicht mehr in den Power Save Mode wechseln kann.
$intNICid=0; do { #Read network adapter properties $objNICproperties = (Get-ItemProperty -Path ("HKLM:\SYSTEM\CurrentControlSet\Control\Class\{0}\{1}" -f "{4D36E972-E325-11CE-BFC1-08002BE10318}", ( "{0:D4}" -f $intNICid)) -ErrorAction SilentlyContinue) #Determine if the Network adapter index exists If ($objNICproperties) { #Filter network adapters # * only Ethernet adapters (ifType = ieee80211(6) - http://www.iana.org/assignments/ianaiftype-mib/ianaiftype-mib) # * root devices are exclude (for instance "WAN Miniport*") # * software defined network adapters are excluded (for instance "RAS Async Adapter") If (($objNICproperties."*ifType" -eq 6) -and ($objNICproperties.DeviceInstanceID -notlike "ROOT\*") -and ($objNICproperties.DeviceInstanceID -notlike "SW\*")) { #Read hardware properties $objHardwareProperties = (Get-ItemProperty -Path ("HKLM:\SYSTEM\CurrentControlSet\Enum\{0}" -f $objNICproperties.DeviceInstanceID) -ErrorAction SilentlyContinue) If ($objHardwareProperties.FriendlyName) { $strNICDisplayName = $objHardwareProperties.FriendlyName } else { $strNICDisplayName = $objNICproperties.DriverDesc } #Read Network properties $objNetworkProperties = (Get-ItemProperty -Path ("HKLM:\SYSTEM\CurrentControlSet\Control\Network\{0}\{1}\Connection" -f "{4D36E972-E325-11CE-BFC1-08002BE10318}", $objNICproperties.NetCfgInstanceId) -ErrorAction SilentlyContinue) #Inform user Write-Host -NoNewline -ForegroundColor White " ID : "; Write-Host -ForegroundColor Yellow ( "{0:D4}" -f $intNICid) Write-Host -NoNewline -ForegroundColor White " Network: "; Write-Host $objNetworkProperties.Name Write-Host -NoNewline -ForegroundColor White " NIC : "; Write-Host $strNICDisplayName Write-Host -ForegroundColor White " Actions:" #Disable power saving Set-ItemProperty -Path ("HKLM:\SYSTEM\CurrentControlSet\Control\Class\{0}\{1}" -f "{4D36E972-E325-11CE-BFC1-08002BE10318}", ( "{0:D4}" -f $intNICid)) -Name "PnPCapabilities" -Value "24" -Type DWord Write-Host -ForegroundColor Green (" - Power saving disabled") Write-Host "" } } #Next NIC ID $intNICid+=1 } while ($intNICid -lt 255)
This post might contain affiliate links. We may earn a commission if you click and make a purchase. Your support is appreciated!
Björn arbeitet auch weiterhin aus Mexiko als Senior Consultant – Microsoft Data Platform und Cloud für die Kramer&Crew in Köln. Auch der Community bleibt er aus der neuen Heimat treu, er engagiert sich auf Data Saturdays oder in unterschiedlichen Foren. Er interessiert sich neben den Themen rund um den SQL Server, Powershell und Azure SQL für Science-Fiction, Backen 😉 und Radfahren.
Amazon.com Empfehlungen
Damit ich auch meine Kosten für den Blog ein wenig senken kann, verwende ich auf diese Seite das Amazon.com Affiliate Programm, so bekomme ich - falls ihr ein Produkt über meinen Link kauft, eine kleine Provision (ohne zusätzliche Kosten für euch!).
Auto Amazon Links: Keine Produkte gefunden.