从管道构建Powershell字符串参数

时间:2014-12-21 12:09:08

标签: powershell

我需要使用管道输出动态构建字符串参数,然后传递给另一个命令。

源命令是Get-VM,它有一个名为Name

的元素

目标命令是Move-VM,它接受​​参数-DestinationStoragePath

我需要根据源名称D:\{0}动态操作此路径,其中{0}是VM名称。

到目前为止,我有这个:

Get-VM | Move-VM -DestinationStoragePath [string]::Format("D:\{0}",$_.Name)

但是它抛出一个异常,如果我静态设置了DestinationStoragePath参数,那么它工作正常,所以它只是这一点就是绊倒它。

有什么想法吗?

1 个答案:

答案 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)) }