gpt4 book ai didi

powershell - "["和"]"字符弄乱了get-childitem

转载 作者:行者123 更新时间:2023-12-04 10:07:31 25 4
gpt4 key购买 nike

使用PowerShell 4.0,
我试图获取多个目录的大小,并且在Windows告诉我的内容和我的代码告诉我的内容之间却得到非常不一致的结果。

有问题的代码是:

$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 : Cannot retrieve the dynamic parameters for the cmdlet. The specified wildcard character pattern is not valid: sample [sample At 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都搞砸了。

编辑:更改了上面的代码以反射(reflect)其当前状态,并包括完整的错误。
再次编辑:上面的代码现在具有一些调试临时变量。

最佳答案

使用-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

关于powershell - "["和"]"字符弄乱了get-childitem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21613997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com