【问题标题】:Do-Until loop ask twice valueDo-Until 循环询问两次值
【发布时间】:2018-09-24 13:16:15
【问题描述】:

问题在于循环 DoUntil。 脚本必须获取 URL,然后询问如何处理他并在用户选择数字后给出结果(1-4) 并通过输出再次给出菜单,用户可以根据需要选择另一个数字或完成脚本输入“X”。

但是这个脚本以不同的方式工作,它是询问 URL,在我选择数字之后,然后它再次询问 URL 和数字,然后在此之后(例如,如果我将选择两次相同的number) 它将把 2 个 URL 的值加在一起。

请指教,我做错了什么。

write-host ""
write-host "Past URL that you need to check"
write-host ""
write-host -nonewline "Type your URL and press Enter: "
$URLok = read-host
write-host ""

if ($URLok.Length -lt 1) {
    write-host "Invalid selection"
}

do {
    write-host "What do you want to do with this URL?"
    write-host ""
    write-host "DNS - Selection 1"
    write-host " MX - Selection 2"
    write-host " NS - Selection 3"
    write-host "TXT - Selection 4"
    write-host ""
    write-host "X - Exit"
    write-host ""
    write-host -nonewline "Type your choice and press Enter: "

    $choice = read-host

    $ok = $choice -match '^[1234x]+$'

    if ( -not $ok) {
        write-host "Invalid selection"
    }

    switch -Regex ( $choice ) {
        "1"
        {
            [System.Net.Dns]::resolve($URLok)
        }

        "2"
        {
            Resolve-DnsName -Name $URLok -Type MX -DnsOnly | select Name,Type,NameExchange
        }

        "3"
        {
            Resolve-DnsName -Name '888ladies.com' -Type NS -DnsOnly | select Name,Type,NameHost,PrimaryServer

        }

        "4"
        {
            Resolve-DnsName -Name $URLok -Type TXT | select Name,Type,Strings
        }

        "5"
        {
            write-host ""
            write-host "Past URL that you need to check"
            write-host ""
            write-host -nonewline "Type your URL and press Enter: "
            $URLok = read-host
            write-host ""
        }
    }
} while($choice -ne "X")

附:很少说,在 2-3-4 选项中,我有 'Resolve-DNSName' 但在循环 doUntil 完成之前,此脚本不会在控制台上显示它。所以只有当我选择“X”并完成循环时,我才能看到结果

【问题讨论】:

  • 主要问题是选项 2-4 的输出,因为如果我放 Write-Host,它会给我没有列的表,这将是一个大字符串

标签: powershell switch-statement do-while write-host


【解决方案1】:

答案是使用 pip Format-Table,它的工作原理!

例如:

Resolve-DnsName -Name $URLok -Type NS -DnsOnly | select Name,Type,NameHost,PrimaryServer| Format-Table

【讨论】:

    猜你喜欢
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 2013-08-10
    • 2016-08-20
    • 2015-01-02
    • 1970-01-01
    相关资源
    最近更新 更多