Netzwerkkarte entfernen - Powershell
Hallo zusammen,
ich durchforste bereits eine Weile das Netz, finde aber keine passende Powershelloption für mein Unterfangen und frage mich ob ich zu blöd bin zu suchen, oder ob es einfach nicht vorgesehen ist?
Ich habe hier einen Coreserver (Server 2022 Standard), der hat aktuell eine alte Quad-Port 1G Karte die durch eine neuere ersetzt werden soll.
Natürlich könnte ich nun die neue einfach einstecken und bekäme dann Ethernet 7 bis 10, allerdings bin ich ein Freund der Ordnung und
wenn ich das planen kann würde ich gern Ethernet 3 bis 6 deinstallieren, die Karte tauschen und mich freuen, dass keine Ghost-Adapter mehr da sind.
Der Geräte-Manager steht mir nicht zur Verfügung und ein Remove- oder Delete- gibt es scheinbar nicht?
Ich hatte mal einen Powershell-Befehl gefunden der alle Netzwerkadapter löscht und alle Konfigurationen zurücksetzt - den finde ich leider auch nicht mehr (man sollte sich alle guten Befehle notieren).
Vermutlich ist es mal wieder ganz easy wenn man weiß wie.
Grüße
ToWa
ich durchforste bereits eine Weile das Netz, finde aber keine passende Powershelloption für mein Unterfangen und frage mich ob ich zu blöd bin zu suchen, oder ob es einfach nicht vorgesehen ist?
Ich habe hier einen Coreserver (Server 2022 Standard), der hat aktuell eine alte Quad-Port 1G Karte die durch eine neuere ersetzt werden soll.
Natürlich könnte ich nun die neue einfach einstecken und bekäme dann Ethernet 7 bis 10, allerdings bin ich ein Freund der Ordnung und
wenn ich das planen kann würde ich gern Ethernet 3 bis 6 deinstallieren, die Karte tauschen und mich freuen, dass keine Ghost-Adapter mehr da sind.
Der Geräte-Manager steht mir nicht zur Verfügung und ein Remove- oder Delete- gibt es scheinbar nicht?
Ich hatte mal einen Powershell-Befehl gefunden der alle Netzwerkadapter löscht und alle Konfigurationen zurücksetzt - den finde ich leider auch nicht mehr (man sollte sich alle guten Befehle notieren).
Vermutlich ist es mal wieder ganz easy wenn man weiß wie.
Grüße
ToWa
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2768046099
Url: https://administrator.de/contentid/2768046099
Ausgedruckt am: 24.11.2024 um 06:11 Uhr
19 Kommentare
Neuester Kommentar
Servus,
hat https://www.google.com/search?q=powershell+remove+network+adapter nichts hilfreiches ergeben?
z.B.
https://techgenix.com/managing-network-adapters-using-powershell/
https://winaero.com/disable-network-adapter-windows-10/
...
Da sind auch Artikel bzgl Ghost-Adaptern...
hat https://www.google.com/search?q=powershell+remove+network+adapter nichts hilfreiches ergeben?
z.B.
https://techgenix.com/managing-network-adapters-using-powershell/
https://winaero.com/disable-network-adapter-windows-10/
...
Da sind auch Artikel bzgl Ghost-Adaptern...
Zitat von @dertowa:
Salut,
naja da ist immer die Rede von "Disable", aber ich möchte ihn ja nicht deaktivieren, sondern deinstallieren/entfernen?
Salut,
naja da ist immer die Rede von "Disable", aber ich möchte ihn ja nicht deaktivieren, sondern deinstallieren/entfernen?
Du meinst also so in etwa?
https://superuser.com/questions/1544537/how-to-uninstall-install-the-nic ...
Zitat von @dertowa:
Das angegebene Script sollte man wohl nicht nutzen, da es wohl alles löscht, auch die Standard-Systemadapter.
Das angegebene Script sollte man wohl nicht nutzen, da es wohl alles löscht, auch die Standard-Systemadapter.
Naja, dafür ist ja auch der Kommentar unter dem Script:
NOTE: Your list of adapters at step 1 must ONLY contain adapters you want to purge. If you have extras in there, adjust the filter (? Status -eq XXX, eg: ? FriendlyName -like "Broadcom*") accordingly!
Zitat von @dertowa:
Dann gibt es wohl wirklich keine "einfache" Lösung für das Deinstallieren was man über die GUI erledigt?
Dann gibt es wohl wirklich keine "einfache" Lösung für das Deinstallieren was man über die GUI erledigt?
Nein, die gibt es meines Erachtens schon für das Installieren nicht (entsprechend dem Hardware-Assistent). Dazu ist immer noch die DevCon.exe nötig, die kann aber auch entfernen.
Die Ordnung könnte aber auch mit Rename-NetAdapter wiederhergestellt werden.
Grüße
Richard
Nicht nur das auch die Berechtigungen würden dir beim Entfernen ein Bein stellen, da die Subkeys darin SYSTEM gehören und nicht ohne weitere Maßnahmen entfernt werden können ohne die Berechtigungen anzupassen. Hiermit lässt sich das bspw. machen
Grüße Uwe
<#
Remove old orphaned non present NICs
#>
# Which NICs should be removed
$nic_filter = '*Intel*Quad*'
# restart elevated if needed
if(!(new-object System.Security.Principal.WindowsPrincipal([System.Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole(544)){start powershell -Verb runas -ArgumentList '-File',$MyInvocation.MyCommand.Definition;exit}
# function to take regkey ownership
function Take-RegKeyOwnership {
param(
[string]$rootKey,
[string]$key,
[System.Security.Principal.SecurityIdentifier]$sid = 'S-1-5-32-545',
[switch]$recurse
)
switch -regex ($rootKey) {
'HKCU|HKEY_CURRENT_USER' { $rootKey = 'CurrentUser' }
'HKLM|HKEY_LOCAL_MACHINE' { $rootKey = 'LocalMachine' }
'HKCR|HKEY_CLASSES_ROOT' { $rootKey = 'ClassesRoot' }
'HKCC|HKEY_CURRENT_CONFIG' { $rootKey = 'CurrentConfig' }
'HKU|HKEY_USERS' { $rootKey = 'Users' }
}
Add-Type '[DllImport("ntdll.dll")] public static extern int RtlAdjustPrivilege(int Privilege, bool Enable, bool CurrentThread, ref bool EnabledOut);' -name token -namespace privilege
9,17,18 | %{[void][privilege.token]::RtlAdjustPrivilege($_,1,0,[ref]0)}
function Take-KeyPermissions {
param($rootKey, $key, $sid, $recurse, $level = 0)
$regKey = [Microsoft.Win32.Registry]::$rootKey.OpenSubKey($key, 'ReadWriteSubTree', 'TakeOwnership')
$acl = New-Object System.Security.AccessControl.RegistrySecurity
$acl.SetOwner($sid)
$regKey.SetAccessControl($acl)
$acl.SetAccessRuleProtection($false, $false)
$regKey.SetAccessControl($acl)
if ($level -eq 0) {
$regKey = $regKey.OpenSubKey('', 'ReadWriteSubTree', 'ChangePermissions')
$rule = New-Object System.Security.AccessControl.RegistryAccessRule($sid, 'FullControl', 'ContainerInherit', 'None', 'Allow')
$acl.ResetAccessRule($rule)
$regKey.SetAccessControl($acl)
}
if ($recurse) {
$regKey.OpenSubKey('').GetSubKeyNames() | %{Take-KeyPermissions $rootKey "$key\$_" $sid $recurse ($level+1)}
}
}
Take-KeyPermissions $rootKey $key $sid $recurse.IsPresent
}
# get date value as binary array
function Convert-DateTimeToRegistryDate([datetime]$dt = (get-date)) {
$ft = $dt.ToFileTime()
return ,[byte[]](0..7 | %{[byte](($ft -shr (8 * $_)) -band 0xFF)})
}
# filter orphaned NICs
foreach($nic in (Get-PNPdevice -class net | ?{$_.Status -eq 'Unknown' -and !$_.Present -and $_.FriendlyName -like $nic_filter})){
try{
Write-host "Removing orphaned adapter '$($nic.FriendlyName)' ... " -F Green -NoNewline
# take ownership of key and subkeys
Take-RegKeyOwnership -rootKey HKLM -key "SYSTEM\CurrentControlSet\Enum\$($nic.InstanceId)" -recurse
# remove key recursive
Remove-Item "HKLM:\System\CurrentControlSet\Enum\$($nic.InstanceId)" -recurse -force
# remove additional references
Remove-ItemProperty "HKLM:\System\CurrentControlSet\Control\DeviceContainers\{00000000-0000-0000-FFFF-FFFFFFFFFFFF}\BaseContainers\{00000000-0000-0000-FFFF-FFFFFFFFFFFF}" -Name $nic.InstanceId -Force -EA SilentlyContinue
Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" -EA SilentlyContinue | ?{$_.GetValue('DeviceInstanceId') -eq $nic.InstanceId} | remove-item -Force -Recurse
Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceClasses\{cac88484-7515-4c03-82e6-71a87abac361}" -EA SilentlyContinue | ?{$_.GetValue('DeviceInstance') -eq $nic.InstanceId} | Remove-Item -Force -Recurse
# set last delete property value for class key
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" -Name LastDeleteDate -Value (Convert-DateTimeToRegistryDate) -EA SilentlyContinue
write-host "OK" -F Green
}catch{
write-host $_.Exception.Message -F Red
}
}
Moin Zusammen,
der Beitrag hier ist zwar schon länger gelöst, ich habe jedoch soeben eine etwas einfachere Methode zum Löschen von (bestimmten) Netzwerkkarten herausgefuchst. 😁
Alle NIC's löschen (mit Vorsicht zu geniessen):
Bestimmte NIC's löschen:
Mit kleinen Änderungen, lassen sich damit aber auch andere Geräte löschen. 😉
Gruss Alex
der Beitrag hier ist zwar schon länger gelöst, ich habe jedoch soeben eine etwas einfachere Methode zum Löschen von (bestimmten) Netzwerkkarten herausgefuchst. 😁
Alle NIC's löschen (mit Vorsicht zu geniessen):
$networkAdapters = Get-CimInstance -ClassName Win32_NetworkAdapter | Where-Object { $_.NetConnectionID -ne $null}
foreach ($adapter in $networkAdapters) {
$pnpDeviceId = $adapter.PNPDeviceID
if ($pnpDeviceId) {
pnputil /remove-device $pnpDeviceId
Write-Output "Netzwerkadapter '$($adapter.NetConnectionID)' mit PNPDeviceID '$pnpDeviceId' wurde gelöscht."
} else {
Write-Output "PNPDeviceID für Netzwerkadapter '$($adapter.NetConnectionID)' nicht gefunden."
}
}
Bestimmte NIC's löschen:
$networkAdapters = Get-CimInstance -ClassName Win32_NetworkAdapter | Where-Object { $_.NetConnectionID -ne $null -and $_.Name -like "Intel(R) Ethernet Network Adapter X710*" }
foreach ($adapter in $networkAdapters) {
$pnpDeviceId = $adapter.PNPDeviceID
if ($pnpDeviceId) {
pnputil /remove-device $pnpDeviceId
Write-Output "Netzwerkadapter '$($adapter.NetConnectionID)' mit PNPDeviceID '$pnpDeviceId' wurde gelöscht."
} else {
Write-Output "PNPDeviceID für Netzwerkadapter '$($adapter.NetConnectionID)' nicht gefunden."
}
}
Mit kleinen Änderungen, lassen sich damit aber auch andere Geräte löschen. 😉
Gruss Alex