gpt4 book ai didi

powershell - PowerShell Get-ChildItem和跳过

转载 作者:行者123 更新时间:2023-12-02 23:29:36 25 4
gpt4 key购买 nike

我正在编写一个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
}

当我传递的 $numberOfFoldersToKeep小于起始目录 $parentFolderName中的文件夹数量时,这非常有用。例如,在我的目标文件夹中有5个子目录,这可以按预期工作:
myScript.ps1 C:\StartingFolder 3

但是,如果我要传递大量要跳过的文件夹,则我的语句似乎返回 $parentFolderName本身的值!所以这行不通:
myScript.ps1 C:\StartingFolder 15

由于skip变量超出了 Get-ChildItem集合中的项目数,因此脚本尝试删除 C:\StartingFolder\,这根本不是我所期望的。

我究竟做错了什么?

最佳答案

试试这个:

$folders1 = Get-ChildItem $parentFolderName | 
? { $_.PSIsContainer -and $_.Name -ne "Data" } |
sort CreationTime -desc |
select -Skip $numberOfFoldersToKeep
if ($folder1 -neq $null)

{

foreach ($objItem in $folders1) {


Write-Host $($objItem.fullname)




Remove-Item -Recurse -Force $objItem.fullname -WhatIf
}
}

关于powershell - PowerShell Get-ChildItem和跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17407712/

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