Powershell &引用;[“和”和“];角色搞乱获取子项
使用PowerShell 4.0, 我试图得到多个目录的大小,我得到的结果在windows告诉我的和我的代码告诉我的之间非常不一致 有关守则是:Powershell &引用;[“和”和“];角色搞乱获取子项,powershell,directory,get-childitem,Powershell,Directory,Get Childitem,使用PowerShell 4.0, 我试图得到多个目录的大小,我得到的结果在windows告诉我的和我的代码告诉我的之间非常不一致 有关守则是: $temp4 = ($folderInfo.rootFolder).fullname $folderInfo.directories += Get-ChildItem -LiteralPath $temp4 -Recurse -Force -Directory $folderInfo.directories += $folderInfo.rootFol
$temp4 = ($folderInfo.rootFolder).fullname
$folderInfo.directories += Get-ChildItem -LiteralPath $temp4 -Recurse -Force -Directory
$folderInfo.directories += $folderInfo.rootFolder
foreach ($dir in $folderInfo.directories)
{
$temp3 = $dir.fullname
$temp2 = Get-ChildItem -LiteralPath $temp3 -Force
$temp = (Get-ChildItem -LiteralPath $dir.fullname -Force -File | Measure-Object -Property length -Sum -ErrorAction SilentlyContinue).Sum
$folderInfo.totalSize += $temp
}
return $folderInfo
如果$folderInfo.rootFolder=D:\sample
然后我得到我想要的
但是如果$folderInfo.rootFolder=D:\[sample
然后我得到
Get-ChildItem:无法检索cmdlet的动态参数。指定的通配符模式无效:示例[示例]
在C:\powershell scripts\test.ps1:55 char:12
+$temp=(Get ChildItem$dir.fullname-Force-File | Measure Object-Property l。。。
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:InvalidArgument:(:)[Get ChildItem],ParameterBindingException
+FullyQualifiedErrorId:GetDynamicParametersException,Microsoft.PowerShell.Commands.GetChildItemCommand
如果D:\sample
的子文件夹中包含一个文件夹,即“[sample”
,则情况也是如此。除了问题目录中或之外的任何内容,我将从其他所有内容中获得正确的结果。$dir.pspath
和$dir.fullname
都会把事情搞砸
编辑:更改上述代码以反映其当前状态,并包含完整错误。再次编辑:上面的代码现在有一些调试临时变量。使用
-LiteralPath
参数代替-Path
,以抑制通配符全球化。此外,由于您使用的是V4,因此可以使用-Directory
开关并省去$\iscontainer
过滤器:
$folderInfo.directories =
Get-ChildItem -LiteralPath $folderInfo.rootFolder -Recurse -Force -Directory
如果目录树下有更多的方括号,请在后续的Get ChildItem命令中继续使用literpath:
$folderInfo.directories += Get-ChildItem -LiteralPath $folderInfo.rootFolder -Recurse -Force -Directory
$folderInfo.directories += Get-Item -LiteralPath $folderInfo.rootFolder
foreach ($dir in $folderInfo.directories)
{
$temp2 = Get-ChildItem -LiteralPath $dir.PSPath -Force
$temp = (Get-ChildItem -LiteralPath $dir.fullname -Force -File | Measure-Object -Property length -Sum -ErrorAction SilentlyContinue).Sum
$folderInfo.totalSize += $temp
}
return $folderInfo
我更改了我的代码以反映您的建议,我仍然收到错误。编辑问题并发布更新的代码和确切的错误消息。更改了我的原始邮件更改了我的原始答案我再次更改了上述代码。虽然我很快就找到了罪魁祸首,-recurse参数查找通配符,而不考虑文字路径。th是基于为递归参数提供的详细信息而假定的。