我需要使用管道输出动态构建字符串参数,然后传递给另一个命令。
源命令是Get-VM
,它有一个名为Name
目标命令是Move-VM
,它接受参数-DestinationStoragePath
我需要根据源名称D:\{0}
动态操作此路径,其中{0}
是VM名称。
到目前为止,我有这个:
Get-VM | Move-VM -DestinationStoragePath [string]::Format("D:\{0}",$_.Name)
但是它抛出一个异常,如果我静态设置了DestinationStoragePath参数,那么它工作正常,所以它只是这一点就是绊倒它。
有什么想法吗?
答案 0 :(得分:6)
Get-VM | Move-VM -DestinationStoragePath [string]::Format("D:{0}",$_.Name)
尝试将字符串[string]::Format("D:{0}",$_.Name)
字面上传递给参数-DestinationStoragePath
。
你需要的是执行表达式并通过在括号中包围你的表达式来返回结果:
Get-VM | % { Move-VM -DestinationStoragePath ([string]::Format("D:{0}",$_.Name)) }