Назад | Перейти на главную страницу

Powershell Удалить список файлов из каталогов, расположенных в общей сетевой папке

Я написал следующий сценарий для удаления всех временных файлов и кэшированных данных из профилей пользователей, расположенных в общей сетевой папке.

Он отлично работает, когда я запускаю его локально на своей машине, но когда я пытаюсь запустить его на сетевом ресурсе, он всегда терпит неудачу.

Так работает мой сценарий,

  1. укажите список папок, для которых требуется очистка. names.text
  2. указать путь к каталогу
  3. используйте команду remove-item для удаления необходимых файлов

     $userlist = Get-Content -Path "C:\Profiles\names.txt"
     $home_folders = "C:\Profiles\"
    
    
     $UserList | ForEach-Object {    
     $User_Home = $Home_Folders + "\" + $_
    
     Remove-Item "$User_Home\UPM_Profile\AppData\Local\Temp\*" -Force -Recurse 
    }   
    

Что я сделал до сих пор?

В настоящее время вы добавляете к своему каталогу две обратные косые черты:

$home_folders = "C:\Profiles\"
#...
$User_Home = $Home_Folders + "\" + $_

Вы можете обойти это, удалив косую черту из home_folders ($home_folders = "C:\Profiles) или удалив его из своего соединения ($User_Home = $Home_Folders + $_).

Однако лучший способ - использовать Join-Path командлет, который проверяет наличие косой черты и при необходимости добавляет ее:

$User_Home = Join-Path $Home_Folders $_