如何在PowerShell中删除与正则表达式匹配的特定文件夹中的文件?

时间:2017-03-28 22:01:48

标签: powershell

我们有两家公司,在AD的两个独立容器中,访问所有扫描文件的一个共享目录。我们需要每晚运行一个自动脚本,并且只清除一个公司AD容器(Office1)中用户文件夹中的文件。我在这里找到了一个非常有用的脚本,我可以修改以匹配和删除这些特定用户的文件夹,但我需要这个只能删除这些文件夹中的文件。

这是脚本:

$UserNames = Get-ADUser -Filter * -SearchBase "OU=Office1,DC=US,DC=parent,DC=net" |
             Select -ExpandProperty SamAccountName
$UserRegex = ($UserNames | ForEach {[RegEx]::Escape($_)}) -join "|"
Get-ChildItem -Path "\\share\scanfiles\Test" -Directory -Recurse |
    Where {$_.Name -match $UserRegex -and !$_.PSIsContainer} |
    Remove-Item -Force

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

Get-ChildItem -Path "\\share\scanfiles\Test" -Directory -Recurse |
  Where { $_.Name -Match $UserRegex } | 
    ForEach-Object { Remove-Item "$($_.FullName)\*" -Force -WhatIf }

-WhatIf预览将被删除的内容;删除它以执行实际删除。

注意管道的前两个段仅输出目录对象,而最后一个段然后删除里面每个目录中的文件。