因此,我尝试创建一个文件夹,在其中合并2个字符串并获取日期;像这样:
2345__OPEXs_datetime
我的代码:
Get-ChildItem 'C:\Scripts\MetadataExport' | New-Item -Name (Get-ChildItem 'C:\Scripts\MetadataExport' -Name).Split('-')[2] + '_XIPs' + "_$((Get-Date).ToString('yyyy-MM-dd'))" -ItemType Directory -Force
但这给了我以下错误:
New-Item : A positional parameter cannot be found that accepts argument '_XIPs'.
At line:1 char:45
+ ... taExport' | New-Item -Name (Get-ChildItem 'C:\Scripts\MetadataExport' ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [New-Item], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.NewItemCommand
您能帮我弄清楚我在做什么错吗?
最佳
答案 0 :(得分:3)
如果要基于管道中的每个输入对象动态计算参数值,则需要使用delay-bind script block({ ... }
),其中automatic $_
variable是指输入对象:
Get-ChildItem C:\Scripts\MetadataExport | New-Item -Type Directory -Force -Name {
$_.Name.Split('-')[2] + '_XIPs' + "_$((Get-Date).ToString('yyyy-MM-dd'))"
} -WhatIf
注意:上方命令中的-WhatIf
common parameter会预览该操作。确定操作将执行您想要的操作后,请删除-WhatIf
。