Powershell удалить подпапки с указанным именем

Оператор == проверяет, указывают ли две ссылки на один и тот же объект или нет. .equals() проверьте фактическое содержимое строки (значение).

Обратите внимание, что метод .equals() принадлежит классу Object (суперкласс всех классов). Вам необходимо переопределить его в соответствии с вашим требованием к классу, но для String оно уже реализовано и проверяет, имеет ли две строки одно и то же значение.

  • Случай 1
    String s1 = "Stack Overflow";
    String s2 = "Stack Overflow";
    s1 == s2;      //true
    s1.equals(s2); //true
    
    Причина: строка литералы, созданные без нуля, хранятся в пуле строк в области перментонов кучи. Таким образом, оба s1 и s2 указывают на один и тот же объект в пуле.
  • Случай 2
    String s1 = new String("Stack Overflow");
    String s2 = new String("Stack Overflow");
    s1 == s2;      //false
    s1.equals(s2); //true
    
    Причина. Если вы создаете объект String с использованием ключевого слова new, ему выделяется отдельное пространство в куче.
2
задан LotPings 17 January 2019 в 10:07
поделиться

3 ответа

Вы почти у цели. Не нужно использовать кавычки вокруг $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

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

[ 112]
0
ответ дан James C. 17 January 2019 в 10:07
поделиться

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

$path = ""
$pattern = ""
Get-ChildItem $path -recurse -directory -include $pattern |
   Remove-Item -WhatIf
   #Remove-Item -Force -ErrorAction SilentlyContinue
0
ответ дан Bakudan 17 January 2019 в 10:07
поделиться

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

$path = "\\myserver\test\User\Profiles\"
Get-ChildItem $path -Recurse -Directory | Where-Object {

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

[110].Name -eq 'Cookies'} | % {Remove-Item

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

[110].FullName}
0
ответ дан Vivek Kumar Singh 17 January 2019 в 10:07
поделиться
Другие вопросы по тегам:

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