我是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
}
这项工作有用吗?
答案 0 :(得分: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
如果您想要单线且无变量:
Get-ChildItem \\myserver\test\User\Profiles\*\AppData\Roaming\Microsoft\Windows\Cookies | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
答案 1 :(得分:0)
试试这支衬垫-
$path = "\\myserver\test\User\Profiles\"
Get-ChildItem $path -Recurse -Directory | Where-Object {$_.Name -eq 'Cookies'} | % {Remove-Item $_.FullName}
答案 2 :(得分:0)
这是一个简化的版本。为了安全起见,我将首先使用-WhatIf
运行它以验证结果是否正确。然后只需注释另一行
$path = ""
$pattern = ""
Get-ChildItem $path -recurse -directory -include $pattern |
Remove-Item -WhatIf
#Remove-Item -Force -ErrorAction SilentlyContinue