Skip to main content
 首页 » 编程设计

powershell之删除目录,不管 260 个字符的限制

2024年06月20日48tuyile006

我正在编写一个简单的脚本,用于在一定天数后删除 USMT 迁移文件夹:

## Server List ## 
$servers = "Delorean","Adelaide","Brisbane","Melbourne","Newcastle","Perth" 
 
## Number of days (-3 is over three days ago) ## 
$days = -3 
 
$timelimit = (Get-Date).AddDays($days) 
 
foreach ($server in $servers) 
{ 
    $deletedusers = @() 
    $folders = Get-ChildItem \\$server\USMT$ | where {$_.psiscontainer} 
    write-host "Checking server : " $server 
    foreach ($folder in $folders)  
    { 
        If ($folder.LastWriteTime -lt $timelimit -And $folder -ne $null) 
        { 
            $deletedusers += $folder 
            Remove-Item -recurse -force $folder.fullname 
        } 
    } 
        write-host "Users deleted : " $deletedusers 
        write-host 
} 

但是我一直遇到可怕的 Remove-Item :指定的路径、文件名或两者都太长。完全限定文件名必须少于 260 个字符,目录名必须少于 248 个字符。

我一直在寻找解决方法和替代方案,但它们都围绕着我关心文件夹中的内容。

我希望有一个更简单的解决方案,因为我并不真正关心文件夹内容是否被标记为删除。

除了 Remove-Item -recurse 之外,是否有任何 native Powershell cmdlet 可以完成我想要的任务?

请您参考如下方法:

我经常在节点项目中遇到这个问题。它们嵌套了它们的依赖项,一旦 git 克隆,就很难删除它们。我遇到的一个不错的节点实用程序是 rimraf

npm install rimraf -g 
rimraf <dir>