2012-10-23 37 views
1

powersehell我有這樣的一個PowerShell調用具有參數

if (Test-Path env:\names) 
{ 
    [string[]] $names= (dir env:\names).Value.Split(",") | % { $_.Trim() } 
} else { 
    [string[]] $names= "peter","mikael","Anders","William" 
} 

Write-Host -n "names: " ; [string]$names 

如果我想從命令提示符下調用它,可能嗎?

我已經試過這樣:

powershell -ExecutionPolicy RemoteSigned -File MainScript.ps1 -PARAM "Peter,Mikael" 

我也明白,不會工作,因爲我要尋找一個env:names,但我怎樣才能使它發揮作用?我所追求的是,​​我想發送一個帶有名稱的參數,並且應該像上面的代碼那樣捕獲它。

回答

0

您在這裏有一個完整的一塌糊塗。第一個env:names表示環境變量names的值,不應該有\

然後,如果你想你的腳本接受參數 - 只需添加param(string[] $names)作爲腳本

如果你想帶參數運行腳本的第一行 - 剛開始PowerShell和類型:full_path_to_script Peter,Mikael

+0

好的我越來越近了。所以我已經設法讓它工作,如果我刪除了if和else。我如何使它工作,如果我什麼都不發送,它將被填充默認名稱? – user1423277

+0

if($ names -eq $ null){$ names =「peter」,「mikael」,「Anders」,「William」} –

+0

它的工作原理....差不多。如果我打印它的電話將是:名稱,名稱,但默認是「名稱」,「名稱」,「名稱」,「名稱」你看到差異?它是最後一個字符串數組。這就是我想要的。 – user1423277

0

那樣?

param($name) 

if (Test-Path env:\names) 
{ 
    $names = $env:names.Split(",") | % { $_.Trim() } 
} 
else 
{ 
    $names = $name.Split(",") | % { $_.Trim() } 
} 

Write-Host -n "names: $names" 
+0

又如何那麼電話會是什麼樣子? – user1423277

+0

powershell -ExecutionPolicy RemoteSigned -File MainScript.ps1「Peter,Mikael」 –