是否可以在PowerShell函数中自动传递开关参数?

问题描述 投票:1回答:3

我从here的灵感中创建了一个函数。

到目前为止,它的工作正常,但仅在调用函数时提供选项开关时有效。我想要做的就是无需输入即可输入“ Get-ExternalIP”。然后,该函数应自动使用-All开关。我也不知道为什么-All开关甚至可以工作...

我尝试将参数$ All = $ true设置为无效,并且VSCode告诉我无论如何都不建议这样做。

在没有任何参数的情况下调用该函数时,是否可以自动传递-All Option Switch?如果指定了-All开关,是否有人可以解释为什么该函数返回所有信息?

谢谢!

这是我的代码:

    function Get-ExternalIP {
    [CmdletBinding()]
    param (
        [parameter(Mandatory=$false)][switch]$Ip,
        [parameter(Mandatory=$false)][switch]$HostName,
        [parameter(Mandatory=$false)][switch]$City,
        [parameter(Mandatory=$false)][switch]$Region,
        [parameter(Mandatory=$false)][switch]$Country,
        [parameter(Mandatory=$false)][switch]$Location,
        [parameter(Mandatory=$false)][switch]$Provider,
        [parameter(Mandatory=$false)][switch]$PostalCode,
        [parameter(Mandatory=$false)][switch]$TimeZone,
        [parameter(Mandatory=$false)][switch]$All
         )

    $IpInfo = Invoke-RestMethod https://ipinfo.io/json

    switch ($PSBoundParameters.Values) {
        $Ip {$IpInfo.ip}
        $HostName {$IpInfo.hostname}
        $City {$IpInfo.city}
        $Region {$IpInfo.region}
        $Country {$IpInfo.country}
        $Location {$IpInfo.loc}
        $Provider {$IpInfo.org}
        $PostalCode {$IpInfo.postal}
        $TimeZone {$IpInfo.timezone}
        Default {$IpInfo}

    }

}

Get-ExternalIP
function powershell parameters switch-statement
3个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.