Powershell 脚本中的多个错误(用于更改 NIC 设置)

Multiple Errors in Powershell Script (for changing NIC Settings)

我是 Powershell 脚本编写的新手,因此非常感谢您提供的每一点帮助。 我整理了一个脚本(主要来自部件和我认为可行的脚本)以从多选菜单更改 IP 地址,它似乎有点工作,但在选择选项时抛出多个错误。

function Find-Adapter() {
    return Get-NetAdapter -Physical | Where-Object {$_.Status -eq "up"}
}

function Set-ManualIP($IP, $MaskBits, $Gateway, $Dns, $IPType) {
        # Retrieve the network adapter that you want to configure
            $adapter = Find-Adapter

        # Remove any existing IP, gateway from our ipv4 adapter
        If (($adapter | Get-NetIPConfiguration).IPv4Address.IPAddress) {
             $adapter | Remove-NetIPAddress -AddressFamily $IPType -Confirm:$false
}
        If (($adapter | Get-NetIPConfiguration).Ipv4DefaultGateway) {
             $adapter | Remove-NetRoute -AddressFamily $IPType -Confirm:$false
}
        # Configure the IP address and default gateway
             $adapter | New-NetIPAddress `
                        -AddressFamily $IPType `
                        -IPAddress $IP `
                        -PrefixLength $MaskBits `
                        -DefaultGateway $Gateway

        # Configure the DNS client server IP addresses
             $adapter | Set-DnsClientServerAddress -ServerAddresses $DNS
}

do {
    do {
        write-host "================ IP Adresswahl ================"
        write-host ""
        write-host "A   - Automatik (DHCP)"
        write-host ""
        write-host "===================== GAMS ===================="
        write-host "B   - GAMS Adresse 171"
        write-host "C   - GAMS Adresse 172"
        write-host "D   - GAMS Adresse 173"
        write-host "E   - GAMS Adresse 174"
        write-host ""
        write-host "================ Andere Systeme ==============="
        write-host "F   - i.Search"
        write-host "G   - BeLiMo"
        write-host "H   - LOGO!"
        write-host "i   - Cisco Setup"
        write-host "J  -  Cisco BMA"
        write-host "K  -  Cisco GAMS"
        write-host ""
        write-host ""
        write-host "X - Exit - Beenden"
        write-host ""
        write-host -nonewline "Auswahl eingeben und mit Enter bestaetigen: "
    
        $choice = read-host
    
        write-host ""
    
        $ok = $choice -match '^[A-Z]+$'
    
         if ( -not $ok) {
            write-host "Invalid selection"
         }
    } until ( $ok )

    switch -Regex ( $choice ) {
        "A"
        {
            write-host "Automatische Adresse wird gesetzt"
                    $IPType = "IPv4"
                    $adapter = Find-Adapter
                    $interface = $adapter | Get-NetIPInterface -AddressFamily $IPType
                If ($interface.Dhcp -eq "Disabled") 
                {
                # Remove existing gateway
                If (($interface | Get-NetIPConfiguration).Ipv4DefaultGateway) {
                     $interface | Remove-NetRoute -Confirm:$false
                }
                # Enable DHCP
                     $interface | Set-NetIPInterface -DHCP Enabled

                # Configure the DNS Servers automatically
                     $interface | Set-DnsClientServerAddress -ResetServerAddresses
            }
        }
    
        "B"
        {
            write-host "Adresse GAMS 171 wird gesetzt"
            Set-ManualIP `
                -IP "192.168.0.171" `
                -MaskBits 24 ` # This means subnet mask = 255.255.255.0
                -Gateway "192.168.0.2" `
                -Dns "192.168.0.2" `
                -IPType "IPv4"
        }

        "C"
        {
            write-host "Adresse GAMS 172 wird gesetzt"
            Set-ManualIP `
                -IP "192.168.0.172" `
                -MaskBits 24 ` # This means subnet mask = 255.255.255.0
                -Gateway "192.168.0.2" `
                -Dns "192.168.0.2" `
                -IPType "IPv4"
        }

        "D"
        {
            write-host "Adresse GAMS 173 wird gesetzt"
            Set-ManualIP `
                -IP "192.168.0.173" `
                -MaskBits 24 ` # This means subnet mask = 255.255.255.0
                -Gateway "192.168.0.2" `
                -Dns "192.168.0.2" `
                -IPType "IPv4"
        }

        "E"
        {
            write-host "Adresse GAMS 174 wird gesetzt"
            Set-ManualIP `
                -IP "192.168.0.174" `
                -MaskBits 24 ` # This means subnet mask = 255.255.255.0
                -Gateway "192.168.0.2" `
                -Dns "192.168.0.2" `
                -IPType "IPv4"
        }

        "F"
        {
            write-host "Adresse i.Search wird gesetzt"
            Set-ManualIP `
                -IP "192.168.1.250" `
                -MaskBits 24 ` # This means subnet mask = 255.255.255.0
                -Gateway "192.168.1.2" `
                -Dns "192.168.1.2" `
                -IPType "IPv4"
        }

        "G"
        {
            write-host "Adresse BeLiMo wird gesetzt"
            Set-ManualIP `
                -IP "192.168.0.10" `
                -MaskBits 24 ` # This means subnet mask = 255.255.255.0
                -Gateway "192.168.0.2" `
                -Dns "192.168.0.2" `
                -IPType "IPv4"
        }

        "H"
        {
            write-host "Adresse LOGO! wird gesetzt"
            Set-ManualIP `
                -IP "192.168.0.210" `
                -MaskBits 24 ` # This means subnet mask = 255.255.255.0
                -Gateway "192.168.0.2" `
                -Dns "192.168.0.2" `
                -IPType "IPv4"
        }

        "i"
        {
            write-host "Adresse Cisco Setup wird gesetzt"
            Set-ManualIP `
                -IP "192.168.1.250" `
                -MaskBits 24 ` # This means subnet mask = 255.255.255.0
                -Gateway "192.168.1.2" `
                -Dns "192.168.1.2" `
                -IPType "IPv4"
        }

        "J"
        {
            write-host "Adresse Cisco BMA wird gesetzt"
            Set-ManualIP `
                -IP "10.10.10.250" `
                -MaskBits 24 ` # This means subnet mask = 255.255.255.0
                -Gateway "10.10.10.2" `
                -Dns "10.10.10.2" `
                -IPType "IPv4"
        }

        "K"
        {
            write-host "Adresse Cisco GAMS wird gesetzt"
            Set-ManualIP `
                -IP "172.16.30.250" `
                -MaskBits 24 ` # This means subnet mask = 255.255.255.0
                -Gateway "172.16.30.2" `
                -Dns "172.16.30.2" `
                -IPType "IPv4"
        }
    }
} until ( $choice -match "X" )

Errors when Script runs on a VM

删除注释# This means subnet mask = 255.255.255.0 这似乎是问题所在,因为网关、dns 和 iptype 没有传递给函数 Set-ManualIP