Reinhard77
Lieutenant
- Registriert
- Feb. 2019
- Beiträge
- 904
Ich habe einen PowerShell Schritt programmiert, womit zwei IP Adressen, zwei Gateways und drei DNS Server vergeben werden.
Nun habe ich festgestellt, dass dieser Schritt auf Servern nicht funktioniert, aber das ist ein anderes Thema. Dazu habe ich mir den Schritt genauer angeschaut und festgestellt es sind fehler von Groß- und Kleinschreibung drin bei der Angabe von Parametern.
Damit man versteht was ich meine, poste ich den Code hier:
Der Fehler ist z.B. bei der zweiten Zeile mit "New-NetIPAddress" zu finden. Da wird der Parameter -InterfaceIndex mit einem kleinen i angegeben. Darüber wird der Parameter mit einem großen I angegeben. Das kuriose ist, wenn ich den Fehler korrigiere, dann funktioniert der Schritt nicht mehr. Nur so funktioniert dieser Schritt. Laut der ISE gibt es für den Befehl New-NetIPAddress keinen Parameter -InterfaceIndex. Laut der Microsoft Website zu dem Befehl schon! Keine Ahnung, ob ich diesen Fehler von Anfang an drin hatte und der mir nur nicht aufgefallen ist, aber sehr merkwürdig finde ich das ganze schon. Damit der Schritt funktioniert, müssen natürlich oben im Schritt die drei Variablen IpAddress, gateway und dnsServer deklariert werden..
Wer kann mir sagen, was da los ist?
Nun habe ich festgestellt, dass dieser Schritt auf Servern nicht funktioniert, aber das ist ein anderes Thema. Dazu habe ich mir den Schritt genauer angeschaut und festgestellt es sind fehler von Groß- und Kleinschreibung drin bei der Angabe von Parametern.
Damit man versteht was ich meine, poste ich den Code hier:
PowerShell:
$activeLan = Get-NetAdapter | Where-Object -FilterScript { $_.Status -eq "Up" }
$currentIp = Get-NetIPAddress -Interfaceindex $activeLan.InterfaceIndex -AddressFamily IPv4
$netIpSplit = $dnsServer.Split('.')
$netIpSplit[3] = "0"
$netIpSplit0 = $netIpSplit[0]
$netIpSplit1 = $netIpSplit[1]
$netIpSplit2 = $netIpSplit[2]
$netIpSplit3 = $netIpSplit[3]
$netIp = "$netIpSplit0.$netIpSplit1.$netIpSplit2.$netIpSplit3"
#Die aktuelle IP Adresse muss erst einmal entfernt werden, bevor alles gesetzt werden kann
Remove-NetIPAddress -InterfaceIndex $activeLan.InterfaceIndex -IPAddress $currentIp.IPv4Address -AddressFamily IPv4 -Confirm:$false
New-NetIPAddress -Interfaceindex $activeLan.InterfaceIndex -IPAddress $currentIp.IPv4Address -Prefixlength 24 -DefaultGateway 192.168.124.254
New-NetIPAddress -Interfaceindex $activeLan.InterfaceIndex -IPAddress $ipAddress -Prefixlength 24 -DefaultGateway $gateway
Set-DNSClientServerAddress -Interfaceindex $activeLan.InterfaceIndex –ServerAddresses (“192.168.126.20”,”192.168.126.30”,"$dnsServer")
#Set-NetIPInterface -InterfaceIndex $activeLan.InterfaceIndex -InterfaceMetric 1
route add 192.168.124.0 mask 255.255.255.255 192.168.124.254 metric 10 if $activeLan.InterfaceIndex -p
route add $netIp mask 255.255.255.255 $gateway metric 20 if $activeLan.InterfaceIndex -p
Der Fehler ist z.B. bei der zweiten Zeile mit "New-NetIPAddress" zu finden. Da wird der Parameter -InterfaceIndex mit einem kleinen i angegeben. Darüber wird der Parameter mit einem großen I angegeben. Das kuriose ist, wenn ich den Fehler korrigiere, dann funktioniert der Schritt nicht mehr. Nur so funktioniert dieser Schritt. Laut der ISE gibt es für den Befehl New-NetIPAddress keinen Parameter -InterfaceIndex. Laut der Microsoft Website zu dem Befehl schon! Keine Ahnung, ob ich diesen Fehler von Anfang an drin hatte und der mir nur nicht aufgefallen ist, aber sehr merkwürdig finde ich das ganze schon. Damit der Schritt funktioniert, müssen natürlich oben im Schritt die drei Variablen IpAddress, gateway und dnsServer deklariert werden..
Wer kann mir sagen, was da los ist?
Zuletzt bearbeitet: