我正在寻找解释为什么在使用脚本块而不在管道Rename-Item
cmdlet 中指定命名参数时参数绑定失败的原因。
为什么会这样:
dir file.txt | ren -path {$_.name} -newname {$_.name -replace 'txt','doc'}
但这不起作用:
dir file.txt | ren {$_.name} {$_.name -replace 'txt','doc'}
?
错误:
Rename-Item : A positional parameter cannot be found that accepts argument '$_.name'.
At line:1 char:19
+ dir file.txt | ren <<<< {$_.name} {$_.name -replace 'txt','doc'}
+ CategoryInfo : InvalidArgument: (:) [Rename-Item], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.RenameItemCommand
语法对Rename-Item
我来说似乎很简单(即两个强制性位置参数):
SYNTAX
Rename-Item [-Path] <string> [-NewName] <string> [-Credential <PSCredential>] [-Force] [-PassThru] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]