如何针对OU内所有计算机运行脚本清理用户签名文件夹
修复PowerShell远程删除用户签名文件夹脚本
以下是修复后的完整脚本,已修正所有未正确引用远程计算机$PC变量的问题,确保能访问目标远程电脑的用户签名文件夹并执行删除操作:
$OUpath = 'ou=GPO Testing Ground,ou=Workstations,ou=Domain Computers,dc=test,dc=com' $PCList = Get-ADComputer -Filter * -SearchBase $OUpath | Select-Object -ExpandProperty Name ForEach ($PC in $PCList) { Write-Host "正在处理计算机: $PC" If (Test-Connection $PC -Count 1 -Quiet) { $TopFolder = 'c$\users' $SigFolder = 'AppData\Roaming\Microsoft\Signatures' # 拼接远程UNC路径,获取远程计算机的用户文件夹列表 $remoteUserPath = "\\$PC\$TopFolder" $FolderList = Get-ChildItem $remoteUserPath -Directory -Exclude default, Public foreach ($Item in $FolderList) { # 拼接完整的远程签名文件夹路径 $fullSigPath = Join-Path -Path (Join-Path -Path $remoteUserPath -ChildPath $Item.Name) -ChildPath $SigFolder Write-Host "检查路径: $fullSigPath" if (Test-Path $fullSigPath) { $deletePath = Join-Path -Path $fullSigPath -ChildPath "*" # 保留-WhatIf参数用于测试,确认路径正确后可移除 Remove-Item $deletePath -Recurse -WhatIf Write-Host "待删除路径: $deletePath" } } } else { Write-Host "计算机 $PC 无法连接,跳过" } }
关键修改说明:
- 远程路径基础拼接:新增
$remoteUserPath = "\\$PC\$TopFolder",明确构建远程电脑的用户文件夹UNC路径,替代原脚本直接访问本地c$\users的错误逻辑。 - 获取远程用户文件夹:
Get-ChildItem的目标路径改为$remoteUserPath,确保读取的是远程电脑的用户目录,而非本地服务器的文件夹。 - 完整签名路径拼接:使用嵌套
Join-Path生成完整的远程签名文件夹路径,避免字符串拼接的语法错误,同时确保路径包含\\$PC\前缀。 - 路径有效性验证:
Test-Path和Remove-Item均使用完整的远程UNC路径,确保操作对象是远程电脑的文件夹。 - 增强日志可读性:调整
Write-Host输出内容,明确当前处理的计算机和路径,便于排查问题。
注意事项:
- 执行脚本的账号需要具备目标远程电脑的管理员权限,才能访问
c$共享并删除文件。 - 测试阶段保留
-WhatIf参数,执行时只会输出待删除路径,不会实际删除文件;确认路径正确后再移除该参数执行真实删除操作。
内容的提问来源于stack exchange,提问作者Snyper82
相关产品推荐
相关产品推荐

