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

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

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

Вот как работает мой скрипт,

  1. укажите список папок, требующих очистки, имена. Текст
  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 
    } 
    

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

  • Я попытался поместить путь как путь \ UNC, но ничего не сделал.
  • Я попытался удалить -erroraction, молча продолжать, чтобы увидеть, какие ошибки появляются, но ничего не делает. вроде я выполняю скрипт но он просто зависает.
  • Я также попытался запустить сценарий из того же сетевого ресурса, но безуспешно.
0
задан 9 December 2015 в 20:55
1 ответ

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

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

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

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

$User_Home = Join-Path $Home_Folders $_
0
ответ дан 5 December 2019 в 11:18

Теги

Похожие вопросы