向 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',同时允许将 LocalExternal 显式传递给 -Option - 不允许使用其他值。