【发布时间】:2015-03-20 15:53:43
【问题描述】:
我正在寻找有关在使用脚本块时参数绑定失败的原因,而无需在管道 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>]
【问题讨论】:
标签: powershell parameterbinding rename-item-cmdlet