首先在PowerShell命令中评估变量

时间:2015-07-22 22:03:18

标签: windows powershell

我正在尝试让PowerShell在执行命令之前评估变量,例如:

$OutputPath = "C:\Temp"  
Get-ChildItem -include *.mp3 | Move-Item -Destination $OutputPath

但是,Move-Item cmdlet尝试按字面解释,因此不会移动。每当我直接输入路径时,脚本都能正常工作,但我需要能够用变量控制路径。我该怎么做?

1 个答案:

答案 0 :(得分:3)

这个答案可能会发展,但正如你的问题所在,我看到一个很大的问题,遗憾的是记录不清。 -Include-Exclude仅在与-Recurse合作时才会执行其预期的功能。没有它就可以使用0结果。在你的情况下,这意味着没有任何东西通过管道,Move-Item没有被执行。

目前,您只是过滤*.mp3这是基本的,只能与-filter参数一起使用。虽然您不需要我也建议您指定-Path,以便移动您想要的文件。

Get-ChildItem -Filter *.mp3 | Other-Stuff ...

您在评论中提到了以下错误:

Move-Item : Cannot create a file when that file already exists.

该错误非常具体。无论是从以前的测试还是对新名称的疏忽,文件确实已经存在。你可以做的两件事来帮助解决这个问题是使用-WhatIf开关,它应该引用详细信息流上的文件路径,这样你才能知道文件的最终位置。

其次,如果您了解数据风险,则使用-Force,以便新文件覆盖该文件。使用Copy-Item并不是什么大问题,因为原始文件仍然存在。 Move-Item的错误可能是永久性的。

相关问题