samnikodem
Goto Top

Powershell IP Adresse vergeben

Hallo Damen und Herren,

ich möchte gerne per Powershell die IP Adresse von mehreren PC's auf statisch ändern, das funktioniert auch soweit super.
Es gibt nur ein Problem: Das Netzwerk hat von PC zu PC einen komplett anderen Namen. (Ethernet, Netzwerk, Netzwerk 2, Netzwerk 3,...)
Da ich den Netzwerknamen benötige, brauche ich auch einen Befehl, wie man den Netzwerknamen kopiert und in Powershell einfügt.
Der Befehl für das vergeben der IP lautet "netsh interface ip set address "Ethernet" static 192.168.66.22 255.255.255.0"

Habt ihr für mich Lösungsvorschläge, wie ich das Problem angehen kann?
Gibt es eventuell ein Befehl in PS der sagt: "kopiere Netzwerknamen und füge ihn zur aktuellen Powershell Sitzung ein"?


Schon mal vielen Dank im Voraus für's helfen.

Sam.

Content-Key: 485002

Url: https://administrator.de/contentid/485002

Printed on: April 23, 2024 at 10:04 o'clock

Member: SeaStorm
SeaStorm Aug 14, 2019 updated at 10:46:49 (UTC)
Goto Top
Hi

wäre Hilfreich zu wissen was du bisher an Code hast.
Grundsätzlich würde ich hier sagen, das du erst per Get-WMIObject den Netzwerkadapter ausliest und dann entsprechend dessen Set-Funktionen nutzt.

Sowas wie
$NICs = Get-WMIObject Win32_NetworkAdapterConfiguration -computername $client | where{$_.IPEnabled -eq $true -and $_.DHCPEnabled -eq $true} 
Foreach($NIC in $NICs) { 
    $ip = ($NIC.IPAddress) 
    $gateway = $NIC.DefaultIPGateway 
    $subnet = $NIC.IPSubnet 
    $dns = $NIC.DNSServerSearchOrder 
    $NIC.EnableStatic($ip, $subnet) 
    $NIC.SetGateways($gateway) 
    $NIC.SetDNSServerSearchOrder($dns) 
    $NIC.SetDynamicDNSRegistration("TRUE")   
} 
-> https://blogs.technet.microsoft.com/danstolts/2012/01/using-powershell-t ...

Das würde dir auf dem Client kurzerhand die vom DHCP zugewiesenen Werte in eine manuelle Konfiguration übernehmen
Member: Samnikodem
Samnikodem Aug 14, 2019 at 11:24:14 (UTC)
Goto Top
Hi,

eigentlich reicht ja der Befehl: "netsh interface ip set address "Ethernet" static 192.168.66.22 255.255.255.0" aus um die IP Adresse zu vergeben.
Um den Netzwerknamen herauszulesen benutze ich den Befehl "Netsh interface ip show config".

Ich weiß nur nicht wie ich aus dem Skript Bereich den Namen kopieren kann, und dann bei meinem Befehl einfüge.
Member: SeaStorm
SeaStorm Aug 14, 2019 at 11:31:32 (UTC)
Goto Top
naja mit netsh befindest du dich halt nicht in Powershell sondern in CMD und da gibts so erst mal keine Objekte. Entsprechend wird das auslesen da ein bisschen fummeliger. Wenn, dann nimmst du dafür wmic:

for /f "tokens=2 delims==" %%a in ('wmic nic where (NetConnectionStatus^=2^) get netconnectionid /value') do (  
  for /f "delims=" %%b in ("%%a") do echo %%b  
)

Aber warum, wenn Powershell doch so viel schöner ist?
Member: Samnikodem
Samnikodem Aug 14, 2019 at 12:36:22 (UTC)
Goto Top
Okay das heißt du empfehlst Powershell zu benutzen?
Wenn ja, wie würdest du vorgehen?
Member: SeaStorm
SeaStorm Aug 14, 2019 at 12:49:20 (UTC)
Goto Top
Zitat von @Samnikodem:

Okay das heißt du empfehlst Powershell zu benutzen?
Ja ...
Wenn ja, wie würdest du vorgehen?
Powershell IP Adresse vergeben
Member: Samnikodem
Samnikodem Aug 14, 2019 at 14:44:52 (UTC)
Goto Top
Dafür brauche ich aber einen Computernamen oder?
Mitglied: 140777
140777 Aug 14, 2019 at 14:50:36 (UTC)
Goto Top
Zitat von @Samnikodem:

Dafür brauche ich aber einen Computernamen oder?
Nein nur wenn es remote ausgeführt werden soll, wenn es lokal ausgeführt wird lässt du das -computername $client einfach weg...
Member: Samnikodem
Samnikodem Aug 18, 2019 at 11:46:19 (UTC)
Goto Top
Super vielen Dank.
Kann ich dann anstatt bei 0, meine IP Adresse vergeben? So z.B.: "$ip = ($NIC.IPAddress [192.168.66.22])"
Member: SeaStorm
SeaStorm Aug 18, 2019 at 12:10:56 (UTC)
Goto Top
die "0" ist der Index. Da liest er die bestehende IP aus und speichert sie in der Variable.
Wenn du es statisch haben willst, dann muss da sowas wie
$ip="192.168.66.22"  
hin