2012-10-23 23 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” –