在&;中传递参数值中的变量;操作员-Powershell

在&;中传递参数值中的变量;操作员-Powershell,powershell,string-interpolation,Powershell,String Interpolation,我试图在powershell脚本下运行,并在--project参数中传递$project\u name,但这不接受也不引用变量。我该怎么用呢 $project_name = "webapp_deploy1" $command = "C:\Program Files\Octopus Deploy\Octopus\Octopus.Migrator.exe" $param = @('partial-export','--project=$project_name','--password=depl

我试图在powershell脚本下运行,并在
--project
参数中传递
$project\u name
,但这不接受也不引用变量。我该怎么用呢

$project_name = "webapp_deploy1"

$command = "C:\Program Files\Octopus Deploy\Octopus\Octopus.Migrator.exe"

$param = @('partial-export','--project=$project_name','--password=deploy1','--directory=D:\Export Project','--ignore-history','--ignore-deployments','--ignore-tenants','--ignore-certificates','--ignore-machines')

& $command $param 

我想你不能这样做

$project_name = 'webapp_deploy1'
& "C:\Program Files\Octopus Deploy\Octopus\Octopus.Migrator.exe" partial_export --project="$project_name" --password=deploy1 --directory='D:\Export Project' --ignore-history --ignore-deployments --ignore-tenants --ignore-certificates --ignore-machines

如果希望展开变量,请不要使用单引号。使用


1) 请使用代码格式(缩进4个空格)。2)您如何知道您的命令行不工作?是否有错误?(请记住:我们看不到您的屏幕。)我发现以下错误:Octopus.Migrator.exe:未找到以下项目:“$project\u name”在第7行char:1+&$command$param+~~~~~~~~~~~~~~~~~~~~~~~~~~~~+CategoryInfo:NotSpecified:(以下p...$project\u name':String)[],RemoteException n+FullyQualifiedErrorId:NativeCommanderRor有关PowerShell中字符串文本和字符串扩展的概述,请参阅的底部部分。我可以运行此操作,并且它也可以工作,但我希望传入变量--project=$project\u name,而不是提供实际的项目名称(Web\u deploy1)好的,我更改了它。这适用于$project\u name=“webapp\u deploy1”和“C:\Program Files\Octopus Deploy\Octopus\Octopus.Migrator.exe”部分导出--project=“$project\u name”--password=deploy1--directory='D:\export project'--忽略历史--忽略部署--忽略租户--忽略证书--忽略机器
字符应该是不必要的。@Bill\u Stewart事实上,我认为powershell通常不会在变量看起来像参数时解释变量,除非有冒号。我不确定你为什么这么说,但这是不正确的。我刚刚用我的
showargs.exe
实用程序再次进行了测试(它输出PowerShell传递给它的实际命令行),并且
--param=$arg
(其中
$arg
包含一个字符串)工作正常。如果
$arg
包含空格,PowerShell将引用参数。正确,@Bill_Stewart,但请注意,OP将参数定义为数组中的字符串,其中确实需要引用。@js2010:只有一个前导
-
后跟一个字母时才会出现问题;尝试
编写输出--project name=$HOME
,您将看到它工作正常。
"--project=$project_name"