向Powershell脚本添加两个选项

向Powershell脚本添加两个选项,powershell,powershell-2.0,Powershell,Powershell 2.0,原谅我,因为我还在学习powershell,所以这可能是一个愚蠢的问题,但我如何向.ps1添加选项? 例如,我目前有一个脚本可以下载一个文件并运行它,但是如果它不能运行它,它将在本地查找该文件并运行它。如何将这两者分开,以便用户可以选择下载或在本地运行? 例如。: “./script.ps1本地” 将在本地查找文件并运行它 “./script.ps1外部” 将下载文件并运行它 我不确定函数是否适用于此,因为脚本的目的不是将其导入模块,我只想让您运行文件add顶部的.ps1 Param( [P

原谅我,因为我还在学习powershell,所以这可能是一个愚蠢的问题,但我如何向.ps1添加选项? 例如,我目前有一个脚本可以下载一个文件并运行它,但是如果它不能运行它,它将在本地查找该文件并运行它。如何将这两者分开,以便用户可以选择下载或在本地运行? 例如。: “./script.ps1本地” 将在本地查找文件并运行它 “./script.ps1外部” 将下载文件并运行它
我不确定函数是否适用于此,因为脚本的目的不是将其导入模块,我只想让您运行文件add顶部的.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
,不允许其他值。

不管怎样,我得到了它。我在param之前还有一句话。谢谢