无法使用Move-Item连接字符串(无法找到接受参数的位置参数)

时间:2016-03-30 13:04:01

标签: powershell

尝试将Powershell中的基本字符串与通配符连接起来,以便使用 Move-Item 函数移动具有特定扩展名的所有内容:

Move-Item $location + "\*" + $extension -destination $destination

使用此行时,我会收到例外情况:

Move-Item : A positional parameter cannot be found that accepts argument '+'.
At C:\Users\username\Documents\Scripts\NWI\move-files.ps1:17 char:21
+ ...             Move-Item $location + "\*" + $extension -destination $des ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Move-Item], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.MoveItemCommand

3 个答案:

答案 0 :(得分:0)

Move-Item -Path $($location + "\*" + $extension) -Destination $destination

应该工作。

答案 1 :(得分:0)

试试这个。

 Move-Item ($location + "\*" + $extension) -destination $destination

答案 2 :(得分:0)

other answers涵盖解决方案但不解释问题。问题是解析问题。

Powershell会看到一个命令Move-Item,一个名为flag / argument -destination $destination和五个未命名的参数$location+"\*"+$extension

您需要强制它以您希望的方式解析命令,方法是将()放在字符串连接周围。

或者将其移至自己的作业。

$src = $location + "\*" + $extension
Move-Item $src -Destination $destination