none
Script DHCP-Reservierung auf remotem Server löschen RRS feed

  • Frage

  • Hallo,

    ich würde gerne mit Hilfe von powershell eine DHCP-Reservierung von meinem Win7-Client auf einem remoten DHCP-Server löschen. Vorher soll eine Abfrage erfolgen, auf welchem DHCP-Server dies geschehen soll und welche IP-Adresse gelöscht werden soll.

    Ich habe mal folgendes ausprobiert:

    $DHCPServer = Read-Host -Prompt 'Eingabe DHCP-Server'
    Enter-PSSession $DHCPServer
    $Server = Read-Host -Prompt 'Zu löschende IP-Adresse eingeben'
    Remove-DhcpServerv4Reservation -IPAddress $Server

    Ergebnis:
    Remove-DhcpServerv4Reservation : Fehler beim Abrufen der Reservierung für das IP-Adresse-Element vom Typ "IPAddress" auf dem DHCP-Server "xyz".

    Es wird versucht auf dem lokalen DHCP-Server die IP-Adresse zu löschen. Dort existiert sie natürlich nicht.

    Wenn ich das ganze Schritt für Schritt durchspiele, klappt alles, d.h. es wird erst eine Remote-Verbindung zum entfernten DHCP-Server aufgebaut und anschließend auf diesem die Reservierung gelöscht.

    Wäre nett, wenn mir jemand auf die Sprünge helfen könnte.

    Vielen Dank!

    Montag, 2. November 2015 14:06

Antworten

  • Hallo,

    das Problem hast Du gut erkannt. :-) Du überträgst die Variable sozusagen auf den RemoteComputer, du sagst im Scriptblock aber nicht das er auch damit arbeiten soll. (siehe die Param Zeile)

    $DHCPServer = Read-Host -Prompt 'Eingabe DHCP-Server'
    $Server = Read-Host -Prompt 'Zu löschende IP-Adresse eingeben'
    $Session = New-PSSession -ComputerName $DHCPServer
    Invoke-Command -Session $Session -ArgumentList $Server -Scriptblock {
        param ($Server)
        Remove-DhcpServerv4Reservation -IPAddress $Server
    } 
    Remove-PSSession $Session

    Beste Gruesse
    brima



    • Bearbeitet brima Mittwoch, 4. November 2015 10:42 Parameter Folge korrigiert
    • Als Antwort markiert gee.em Mittwoch, 4. November 2015 10:57
    Mittwoch, 4. November 2015 10:39

Alle Antworten

  • Hi,

    Enter-PSSession ist mW für interaktive Sitzungen gedacht, nicht für Skripts.

    Versuch es mal mit "New-PSSession" und "Invoke-Command -Session $Session":

    $Session = New-PSSession -ComputerName $DHCPServer
    Invoke-Command -Session $Session -Scriptblock {Remove-DhcpServerv4Reservation -IPAddress $Server}
    Remove-PSSession $Session


    Gruß

    Ben

    MCSA Windows 8 (.1) MCSA Windows Server 2012 (R2)

    Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort! Danke! :-)

    Hinweis: Meine Posts werden "wie besehen" ohne jedwede Gewähr bereitgestellt, da menschliche, technische und andere Fehler nicht ausgeschlossen werden können.

    Montag, 2. November 2015 14:15
  • Vielen Dank für die schnelle Antwort

    So auf die Schnelle ausprobiert, erhalte ich folgende Fehlermeldung:

    Das Argument für den Parameter "IPAddress" kann nicht überprüft werden. Das Argument ist NULL oder leer. Geben Sie ein Argument an, das nicht NULL 
    oder leer ist, und führen Sie den Befehl erneut aus.
        + CategoryInfo          : InvalidData: (:) [Remove-DhcpServerv4Reservation], ParameterBindingValidationException
        + FullyQualifiedErrorId : ParameterArgumentValidationError,Remove-DhcpServerv4Reservatio

    Bei Abfrage der Variable $Server wird mir allerdings die eingegebene IP-Adresse angezeigt.

    Montag, 2. November 2015 14:30
  • Stimmt, da musst Du hinten noch ein "-ArgumentList $Server" anhängen, damit die Variable mit übergeben wird.

    Gruß

    Ben

    MCSA Windows 8 (.1) MCSA Windows Server 2012 (R2)

    Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort! Danke! :-)

    Hinweis: Meine Posts werden "wie besehen" ohne jedwede Gewähr bereitgestellt, da menschliche, technische und andere Fehler nicht ausgeschlossen werden können.

    Dienstag, 3. November 2015 07:38
  • Danke! Werde morgen nochmal testen und gebe Rückmeldung!
    Dienstag, 3. November 2015 09:50
  • So, habe mal getestet. Leider immer noch die gleiche Fehlermeldung wie vor. Irgendwie wird der Inhalt der Variablen $Server nicht übergeben. Hier nochmal der Code:

    $DHCPServer = Read-Host -Prompt 'Eingabe DHCP-Server'
    $Server = Read-Host -Prompt 'Zu löschende IP-Adresse eingeben'
    $Session = New-PSSession -ComputerName $DHCPServer
    Invoke-Command -Session $Session -Scriptblock {Remove-DhcpServerv4Reservation -IPAddress $Server} -ArgumentList $Server
    Remove-PSSession $Session

    Noch eine Idee?

     
    Mittwoch, 4. November 2015 10:18
  • Wenn ich mich zunächst (per RDP) auf einen DHCP-Server verbinde und dort nachfolgendes Skript ausführe:

    $DHCPServer = Read-Host -Prompt 'Eingabe DHCP-Server'
    $Server = Read-Host -Prompt 'Zu löschende IP-Adresse eingeben'
    Remove-DhcpServerv4Reservation -ComputerName $DHCPServer -IPAddress $Server

    funktioniert das ohne Probleme.

    Das Problem liegt also an der remote Session in Verbindung mit der Übergabe des Wertes $Server. 

    Mittwoch, 4. November 2015 10:28
  • Hallo,

    das Problem hast Du gut erkannt. :-) Du überträgst die Variable sozusagen auf den RemoteComputer, du sagst im Scriptblock aber nicht das er auch damit arbeiten soll. (siehe die Param Zeile)

    $DHCPServer = Read-Host -Prompt 'Eingabe DHCP-Server'
    $Server = Read-Host -Prompt 'Zu löschende IP-Adresse eingeben'
    $Session = New-PSSession -ComputerName $DHCPServer
    Invoke-Command -Session $Session -ArgumentList $Server -Scriptblock {
        param ($Server)
        Remove-DhcpServerv4Reservation -IPAddress $Server
    } 
    Remove-PSSession $Session

    Beste Gruesse
    brima



    • Bearbeitet brima Mittwoch, 4. November 2015 10:42 Parameter Folge korrigiert
    • Als Antwort markiert gee.em Mittwoch, 4. November 2015 10:57
    Mittwoch, 4. November 2015 10:39
  • Super! Jetzt hat es funktioniert.

    Ganz herzlichen Dank!

    Mittwoch, 4. November 2015 10:54