在测试后停止写入屏幕的值

时间:2015-11-18 03:03:22

标签: powershell

我开始编写一个函数来测试有效的IP地址并构建。我的代码工作正常,但是,当IP有效时,它会将有效的IP写入屏幕。由于我将添加到此函数,其中最终输出将是IP地址等,我想以某种方式抑制它。

do {
   $ip=$(read-host "Enter an IP address")
   [ref]$a = $null
   $inputOk = [system.net.IPAddress]::tryparse($ip,$a)
   if ($inputOk -eq $false) {
       write-warning ("'{0}' is not a valid IP address, try again." -f $ip)
   }
} until ($inputOk)

输出如下:

Enter an IP address: 127.0.0.1
127.0.0.1

我希望返回刚刚输入的有效IP。

1 个答案:

答案 0 :(得分:1)

也许这可以帮到你:

Function Test-IP {
    [CmdletBinding()]
    Param (
        $IP
    )

    do {
        $IP = Read-Host "Enter an IP address"

        $Result = [System.Net.IPAddress]::TryParse($IP,[Ref]$null)

        if ($Result) {
            Write-Verbose "Valid IP found: $IP"
            <#
                Do stuff here with the valid IP
            #>
        }
        else {
            Write-Warning ("'{0}' is not a valid IP address, try again." -f $ip)
        }
    } until ($Result)
}

# See progress messages:
Test-IP -Verbose

# Without progress messages
Test-IP

如果您创建的函数包含[CmdLetBinding()],则可以使用Verbose开关。要显示脚本/函数的进度,这是要走的路。如果您不想查看函数中发生的情况,只需省略Verbose开关。