【问题标题】:PowerShell script to delete folder in Users on AD computers用于删除 AD 计算机上用户中的文件夹的 PowerShell 脚本
【发布时间】:2017-12-15 22:03:56
【问题描述】:

我一直在尝试创建一个脚本,用于从最初从 PDQ 部署创建的所有 AD 计算机中以管理员的名义删除 C:\Users 中的文件夹。当我尝试运行它时,我收到有关缺少文件路径的错误。搜索结果产生了一个很长的脚本,尽管我当前的脚本只有几行。我希望它尽可能轻巧,以免性能严重下降。我错过了什么吗?代码如下。

$Destination = 'C:\Users\foldername'

Get-ChildItem $Destination | ForEach-Object {remove-Item -Force -recurse}

【问题讨论】:

  • 只引用本地计算机。您打算如何在远程计算机上执行此操作?另外,第二行可以是Remove-Item $Destination -Force -Recurse
  • 它将在一个单独的隔离 PDQ 部署文件中,在本地进行一些测试后执行到远程 PC
  • 是否有理由不使用可以为您做到这一点的组策略功能?
  • 我没有必要的权限将其添加为 GPO,否则我会走这条路。

标签: powershell active-directory


【解决方案1】:

假设您有权限,类似的东西可能会起作用,但是使用通配符过滤器运行 Get-ADComputer 可能需要很长时间,具体取决于有多少

$allComputers = Get-ADComputer -filter "Name -like `"*`"" | Select Name
$Destination = "C:\Users\folder"
Foreach($computer in $allComputers.Name)
{
    Invoke-Command -computername $computer -ScriptBlock {
        param($Destination)
        if(Test-Path ($Destination)){
            Write-Host "Removing $Destination from $computer"
            Remove-Item $Destination -Force -Recurse
        }
    } -ArgumentList $Destination
}

【讨论】:

  • 谢谢!这可以修改以在本地测试吗?我想通过编辑通配符来包含单个计算机的名称?
  • 是的,或者只是将 $allComputers = @("server01","server02","etc") 作为一个数组,然后在 foreach 中你将只有 $allComputers,而不是 $allComputers.Name
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-23
  • 1970-01-01
  • 2020-06-16
  • 1970-01-01
  • 1970-01-01
  • 2012-05-08
  • 1970-01-01
相关资源
最近更新 更多