Powershell удалить подпапки с указанным именем - PullRequest
0 голосов
/ 17 января 2019

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

Мне нужно иметь возможность искать на диске определенную папку с именем "Cookies" и удалять ее. Проблема только в том, что файлы cookie папок установлены в нескольких местах.

Пример:

\\\myserver\test\User\Profiles\USER1\AppData\Roaming\Microsoft\Windows\Cookies
\\\myserver\test\User\Profiles\USER2\AppData\Roaming\Microsoft\Windows\Cookies
\\\myserver\test\User\Profiles\USER3\AppData\Roaming\Microsoft\Windows\Cookies
\\\myserver\test\User\Profiles\USER4\AppData\Roaming\Microsoft\Windows\Cookies

и продолжай ...

Как заставить powershell пройти через все эти разные папки USER, чтобы найти папку Cookies и удалить ее.

Я придумал это, но я надеялся, что гуру PowerShell может помочь мне.

$cookies= Get-ChildItem \\myserver\test\User\Profiles\*\AppData\Roaming\Microsoft\Windows\Cookies

foreach ($cookie in $cookies){
    Remove-Item "$cookies" -Force -Recurse -ErrorAction SilentlyContinue   
}

Будет ли это работать?

Ответы [ 3 ]

0 голосов
/ 17 января 2019

Вы почти у цели. Не нужно использовать кавычки вокруг $cookies.

Если вы делаете foreach ($cookie in $cookies), тогда работайте с $cookie в блоке сценария, а не с $cookies.

Это работает:

$cookies = Get-ChildItem \\myserver\test\User\Profiles\*\AppData\Roaming\Microsoft\Windows\Cookies

foreach ($cookie in $cookies){
    Remove-Item $cookie -Force -Recurse -ErrorAction SilentlyContinue   
}

но это также будет работать без цикла:

$cookies = Get-ChildItem \\myserver\test\User\Profiles\*\AppData\Roaming\Microsoft\Windows\Cookies
Remove-Item $cookies -Force -Recurse -ErrorAction SilentlyContinue

Если вы хотите использовать однострочник без переменных:

Get-ChildItem \\myserver\test\User\Profiles\*\AppData\Roaming\Microsoft\Windows\Cookies | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
0 голосов
/ 17 января 2019

Это немного упрощенная версия. Ради безопасности я сначала запустил бы его с -WhatIf, чтобы проверить, верен ли результат. Затем просто прокомментируйте другую строку

$path = ""
$pattern = ""
Get-ChildItem $path -recurse -directory -include $pattern |
   Remove-Item -WhatIf
   #Remove-Item -Force -ErrorAction SilentlyContinue
0 голосов
/ 17 января 2019

Попробуйте этот лайнер -

$path = "\\myserver\test\User\Profiles\"
Get-ChildItem $path -Recurse -Directory | Where-Object {$_.Name -eq 'Cookies'} | % {Remove-Item $_.FullName}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...