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