我正在编写一个 PowerShell 脚本,该脚本删除除 X 个最近的文件夹之外的所有文件夹,不包括名为 Data 的文件夹。我收集要删除的文件夹的声明如下所示:
$folders1 = Get-ChildItem $parentFolderName |
? { $_.PSIsContainer -and $_.Name -ne "Data" } |
sort CreationTime -desc |
select -Skip $numberOfFoldersToKeep
foreach ($objItem in $folders1) {
Write-Host $webServerLocation\$objItem
Remove-Item -Recurse -Force $parentFolderName\$objItem -WhatIf
}
当我传递的 a$numberOfFoldersToKeep
少于起始目录中的文件夹数时,这非常有用$parentFolderName
。例如,在我的目标文件夹中有 5 个子目录,这可以按预期工作:
myScript.ps1 C:\StartingFolder 3
但是,如果我要跳过大量文件夹,我的语句似乎返回了$parentFolderName
自身的值!所以这行不通:
myScript.ps1 C:\StartingFolder 15
因为 skip 变量超过了Get-ChildItem
集合中的项目数,所以脚本会尝试删除C:\StartingFolder\
这根本不是我所期望的。
我究竟做错了什么?