Powershell删除具有特定名称的子文件夹

时间:2019-01-17 09:48:22

标签: powershell

我是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 :(得分: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