使用计算参数调用函数

时间:2012-11-29 18:01:49

标签: function powershell

我是PowerShell的新手。我正在调用我创建的函数,它将我的两个参数分成几个。如何使计算出的参数在传递之前实际计算出来?

dir -Recurse -Path $source | foreach {MoveFile $_.FullName ($destination + "\" + $_.Extension.Substring(1, ($_.Extension.Length - 1))) }

这是这一部分:

($destination + "\" + $_.Extension.Substring(1, ($_.Extension.Length - 1))

那有问题。它将它分开而不是计算它。我做错了什么?

1 个答案:

答案 0 :(得分:1)

通过将参数表达式放在parens中,您正在正确地执行此操作。当我在我的机器上使用带有Copy-Item的代码片段时,它工作得很好。您可能需要显示MoveFile函数的外观。可能是在你的情况下$ _。扩展正在评估为$ null。您似乎没有筛选具有扩展名的文件。

BTW,使用内置的Move-Item,您可以将其简化为:

dir $source -r *.* | Move-Item -Dest {"$destination\$($_.Extension.Substring(1))"}

String.Substring的重载只接受起始索引,并为您提供从该点到结尾的其余字符串。因此,您不必指定字符串其余部分的长度。