1

我想根据 Switch Condition Like 提出一个论点 Mandatory

param(
[string]$para1,
[switch]$choice="Upgrade"
[string]$paraUpg 
[string]$paraInstall 
) 

现在如果选择是Upgrade我想$paraUpg强制,如果$choiceInstall那么$paraInstall必须是强制的

4

2 回答 2

1

您可以尝试以下方法。设置所有参数,如果$choice="Upgrade"and$paraUpg为 null 或为空,则抛出异常。类似地重复$choice="Install"。然后,您可以根据选择的参数有条件地选择参数检查后要执行的操作。

param(
    [string]$para1,
    [string]$choice="Upgrade",
    [string]$paraUpg,
    [string]$paraInstall
    )

#check if choice is "Upgrade" and paraUpg is empty
if(($choice -eq "Upgrade") -and ([string]::IsNullOrEmpty($paraUpg)))
{
    throw "paraUpg is a required parameter"
}
#check if choice is "Install" and paraInstall is empty
elseif (($choice -eq "Install") -and ([string]::IsNullOrEmpty($paraInstall)) )
{
    throw "paraInstall is a required parameter"
}
于 2013-03-13T19:08:17.097 回答
0

首先,它PowerShell与 Windows 7 一起作为其添加的实用程序之一。

到目前为止,您还没有详细说明您做了什么。我怀疑你想要这样的东西。

在您的PowerShell脚本中最好在顶部声明参数。

param([string]$UserName, [string]$Password, [string]$MachineName)

在需要时在您的 powershell 脚本中使用这些 parmas。现在创建一个批处理文件,您可以从中将值传递给这些参数,如下所示。

@powershell -ExecutionPolicy Unrestricted -FILE YourPowerShellScript.ps1 "UserName" "Password" "MachineName"

我已经在批处理文件中指定了策略权限,因此您不必每次在不同机器上运行脚本时都提及。希望能帮助到你。

于 2013-02-16T05:10:05.553 回答