Мне очень интересно об этом, как это мне потребовалось некоторое время, но я не мог понять этоRemove-Item не работает, когда имя файла содержится в переменной
Во-первых, я побежал следующий сценарий, чтобы получить все 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» '. – mklement0