我从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