Оператор ==
проверяет, указывают ли две ссылки на один и тот же объект или нет. .equals()
проверьте фактическое содержимое строки (значение).
Обратите внимание, что метод .equals()
принадлежит классу Object
(суперкласс всех классов). Вам необходимо переопределить его в соответствии с вашим требованием к классу, но для String оно уже реализовано и проверяет, имеет ли две строки одно и то же значение.
String s1 = "Stack Overflow";
String s2 = "Stack Overflow";
s1 == s2; //true
s1.equals(s2); //true
Причина: строка литералы, созданные без нуля, хранятся в пуле строк в области перментонов кучи. Таким образом, оба s1 и s2 указывают на один и тот же объект в пуле. String s1 = new String("Stack Overflow");
String s2 = new String("Stack Overflow");
s1 == s2; //false
s1.equals(s2); //true
Причина. Если вы создаете объект String с использованием ключевого слова new
, ему выделяется отдельное пространство в куче. Вы почти у цели. Не нужно использовать кавычки вокруг $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] Это немного упрощенная версия. В целях безопасности я сначала запустил бы его с -WhatIf
, чтобы проверить, верен ли результат. Затем просто прокомментируйте другую строку
$path = ""
$pattern = ""
Get-ChildItem $path -recurse -directory -include $pattern |
Remove-Item -WhatIf
#Remove-Item -Force -ErrorAction SilentlyContinue
Попробуйте этот лайнер -
$path = "\\myserver\test\User\Profiles\"
Get-ChildItem $path -Recurse -Directory | Where-Object { Попробуйте этот лайнер -
[110].Name -eq 'Cookies'} | % {Remove-Item Попробуйте этот лайнер -
[110].FullName}