我还没有太多的PowerShell经验,我正在努力教自己.
我正在尝试为更大的项目提供一些概念代码证明.这里的主要目标是使用函数动态创建并向数组添加元素.
这是我的代码:
$testArray = @()
function addToArray($Item1)
{
$testArray += $Item1
"###"
}
$tempArray = "123", "321", "453"
$foldertest = "testFolder"
foreach($item in $tempArray)
{
addToArray $item
}
"###"
Run Code Online (Sandbox Code Playgroud)
每次函数完成时,数组都变为空.请记住,我的大部分编程经验都来自Java,PHP,一些C和C++,仅举几例,如果我在PHP中这样做(当然调整语言语法),这本来可以正常工作.
使用PowerShell 4.0,我试图获得多个目录的大小,我得到的窗口告诉我和我的代码告诉我的结果非常不一致.
有问题的代码是:
$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
Run Code Online (Sandbox Code Playgroud)
如果$folderInfo.rootFolder = D:\sample
那时我得到我想要的东西,但如果$folderInfo.rootFolder = D:\[sample
那时我得到了
Get-ChildItem:无法检索cmdlet的动态参数.指定的通配符模式无效:sample [sample at C:\ powershell scripts\test.ps1:55 char:12 + $ temp =(Get-ChildItem $ dir.fullname -Force -File | Measure-Object -Property l ... …