【发布时间】:2017-03-19 08:51:27
【问题描述】:
我对此很好奇,因为我花了一段时间,但我想不通
首先,我运行以下脚本来获取目录中的所有 Zip 文件
$entryList = New-Object System.Collections.ArrayList
Get-ChildItem -Path "\\tools-backup.nas\Tools-Backup\FakeS3\Rollback\$serverName" -ErrorAction Stop | sort -Property "LastWriteTime" | ForEach-Object {
if($_.Name.Contains(".zip")) {
$entryList.Add($_.Name) | Out-Null
}
}
显示如下:
2016-08-30_21-15-17_server-1.1.20558_client-1.1.20518 - Copy - Copy.zip
2016-08-30_21-15-17_server-1.1.20558_client-1.1.20518 - Copy (2).zip
2016-08-30_21-15-17_server-1.1.20558_client-1.1.20518 - Copy (3).zip
2016-08-30_21-15-17_server-1.1.20558_client-1.1.20518 - Copy.zip
2016-08-30_21-15-17_server-1.1.20558_client-1.1.20518 - Copy (6).zip
2016-08-30_21-15-17_server-1.1.20558_client-1.1.20518 - Copy - Copy (2).zip
然后我尝试使用这样的删除项目删除第一个(2016-08-30_21-15-17_server-1.1.20558_client-1.1.20518 - Copy - Copy.zip):
Remove-Item -Path "\\tools-backup.nas\Tools-Backup\FakeS3\Rollback\$serverName\$entryList[0]" -ErrorAction Stop
Remove-Item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
At line:1 char:1
+ Remove-Item -Path "\\tools-backup.nas\Tools-Backup\FakeS3\Rollback\$s ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ReadError: (\\toolsbackup....lback\autopatch:String) [Remove-Item], PathTooLongException
+ FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.RemoveItemCommand
我得到了一个路径太长的异常。但是,如果我将文件名放在“Remove-Item”中而不是通过 $entryList[0] 传递它,它就起作用了
Remove-Item -Path "\\tools-backup.nas\Tools-Backup\FakeS3\Rollback\$serverName\2016-08-30_21-15-17_server-1.1.20558_client-1.1.20518 - Copy (2).zip" -ErrorAction Stop
【问题讨论】:
-
顺便说一句:你可以简单地做
$entryList = Get-ChildItem -Path "\\tools-backup.nas\Tools-Backup\FakeS3\Rollback\$serverName" *.zip -ErrorAction Stop | sort -Property "LastWriteTime"。
标签: powershell powershell-2.0 powershell-3.0 powershell-4.0 powershell-remoting