0

Powershell的参数列表我想要一个说法强制性基于开关状态 像根据病情

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

现在如果选择的是Upgrade我要让$paraUpg强制性的,如果$choiceInstall然后$paraInstall必须是强制性的

+0

请告诉我们你做了什么。 – 2013-02-16 04:54:37

+0

其实我想是这样 参数( [字符串] $ PARA1, [转] $选择= “升级” [字符串] $ paraUpg [字符串] $ paraInstall ) 现在如果选择的是升级我想使$ paraupg强制性,如果选择是安装然后$ paraInstall必须是强制性的 – Shree 2013-03-13 15:29:47

+0

你可以添加这个新的信息到你的问题,它符合你试过的东西,人们不会投票它的标准(也许) – danseery 2013-03-13 18:20:19

回答

0

你可以尝试下面的东西。设置所有参数,如果$choice="Upgrade"$paraUpg为空或空引发异常。对$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" 
} 
0

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

你还没有给出关于你到目前为止做了什么的任何细节。我怀疑你想要这样的东西。

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

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

在需要的地方在您的powershell脚本中使用这些参数。现在创建一个批处理文件,您可以将值传递给这些参数。

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

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

+0

我的问题是,当从批处理调用Powershell脚本时,它会要求继续,因为该脚本没有签名。我想绕过该确认 – Shree 2013-03-04 10:27:53

+0

在我的回应中,我提到'ExecutionPolicy'权限为'Unrestricted'在处理你的情况的参数批处理文件中。您可以将其设置为“Set-ExecutionPolicy AllSigned”。 – Rohit416 2013-03-05 04:50:53