我正在编写一个简单的脚本,用于在一定天数后删除 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>