向 Powershell 脚本添加两个选项
Adding two options to a Powershell script
请原谅我,因为我还在学习 powershell,所以这可能是个愚蠢的问题,但我如何向 .ps1 添加选项?
例如,我目前有一个脚本可以下载一个文件并 运行 发送它,但如果它不能 运行 它,它将在本地查找该文件然后 运行 它。我如何将这两者分开,以便用户可以选择下载或只在本地 运行?
例如。:
'./script.ps1 本地'
将在本地查找文件并 运行 它
'./script.ps1 外部'
将下载文件并 运行 它
我不确定函数是否适合这个,因为脚本的目的不是将它导入模块,我只是想要它所以你 运行 .ps1.
在文件顶部添加;
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 }
}
如果您需要将传递给参数的值限制为一组固定值,请使用[ValidateSet(...)]
参数属性:
[CmdletBinding()]
Param(
[ValidateSet('Local', 'External')]
[string] $Option = 'Local'
)
Switch ($Option)
{
'local' {
# ...
break
}
'external' {
# ...
break
}
}
以上默认 -Option
(因此参数变量 $Option
)为 'Local'
,同时允许将 Local
或 External
显式传递给 -Option
- 不允许使用其他值。
请原谅我,因为我还在学习 powershell,所以这可能是个愚蠢的问题,但我如何向 .ps1 添加选项? 例如,我目前有一个脚本可以下载一个文件并 运行 发送它,但如果它不能 运行 它,它将在本地查找该文件然后 运行 它。我如何将这两者分开,以便用户可以选择下载或只在本地 运行? 例如。: './script.ps1 本地' 将在本地查找文件并 运行 它 './script.ps1 外部' 将下载文件并 运行 它 我不确定函数是否适合这个,因为脚本的目的不是将它导入模块,我只是想要它所以你 运行 .ps1.
在文件顶部添加;
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 }
}
如果您需要将传递给参数的值限制为一组固定值,请使用[ValidateSet(...)]
参数属性:
[CmdletBinding()]
Param(
[ValidateSet('Local', 'External')]
[string] $Option = 'Local'
)
Switch ($Option)
{
'local' {
# ...
break
}
'external' {
# ...
break
}
}
以上默认 -Option
(因此参数变量 $Option
)为 'Local'
,同时允许将 Local
或 External
显式传递给 -Option
- 不允许使用其他值。