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

Ausgedruckt am: 28.03.2024 um 16:03 Uhr

Mitglied: SeaStorm
SeaStorm 14.08.2019 aktualisiert um 12:46:49 Uhr
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
Mitglied: Samnikodem
Samnikodem 14.08.2019 um 13:24:14 Uhr
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.
Mitglied: SeaStorm
SeaStorm 14.08.2019 um 13:31:32 Uhr
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?
Mitglied: Samnikodem
Samnikodem 14.08.2019 um 14:36:22 Uhr
Goto Top
Okay das heißt du empfehlst Powershell zu benutzen?
Wenn ja, wie würdest du vorgehen?
Mitglied: SeaStorm
SeaStorm 14.08.2019 um 14:49:20 Uhr
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
Mitglied: Samnikodem
Samnikodem 14.08.2019 um 16:44:52 Uhr
Goto Top
Dafür brauche ich aber einen Computernamen oder?
Mitglied: 140777
140777 14.08.2019 um 16:50:36 Uhr
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...
Mitglied: Samnikodem
Samnikodem 18.08.2019 um 13:46:19 Uhr
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])"
Mitglied: SeaStorm
SeaStorm 18.08.2019 um 14:10:56 Uhr
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