请原谅我仍在学习Powershell,所以这可能是一个愚蠢的问题,但是如何为.ps1添加选项? 例如,我目前有一个脚本来下载文件并运行它,但是如果它无法运行,它将在本地查找文件然后运行它。我如何分开这两个,以便用户可以选择下载还是直接在本地运行? 例如。: './script.ps1本地' 将在本地查找文件并运行 './script.ps1外部' 将下载文件并运行它 我不确定函数是否适合此操作,因为脚本的重点不是要将其导入模块,我只是想要它,因此您可以运行.ps1。
答案 0 :(得分:1)
在文件顶部添加;
Param(
[Parameter(Position=1)][string]$option
)
Switch ($option)
{
'local' { RunLocal }
'other' { RunOther }
default { RunDefault }
}
看起来像
Param(
[Parameter(Position=1)][string]$option
)
function RunLocal {
Write-Host "RunLocal"
}
function RunOther {
Write-Host "RunOther"
}
function RunDefault {
Write-Host "RunDefault"
}
Switch ($option)
{
'local' { RunLocal }
'other' { RunOther }
default { RunDefault }
}
答案 1 :(得分:1)
如果您需要将传递给参数的值约束为一组固定值,请使用 [ValidateSet(...)]
参数属性:
[CmdletBinding()]
Param(
[ValidateSet('Local', 'External')]
[string] $Option = 'Local'
)
Switch ($Option)
{
'local' {
# ...
break
}
'external' {
# ...
break
}
}
上面的默认值-Option
(因此参数变量$Option
)设为'Local'
,同时允许将Local
或External
显式传递给{{1 }}-不允许使用其他值。