如何用PowerShell在AD域内百台PC的C盘创建Logs文件夹
在Active Directory批量机器上创建C:\Logs文件夹的PowerShell方案
嘿,这个批量部署的需求很典型,我给你整理几个实用的PowerShell方案,同时也会提一个更适合大规模机器的替代方法:
方案一:PowerShell远程执行(Invoke-Command + Get-ADComputer)
这是最直接的PowerShell原生方法,依赖PowerShell远程(WinRM)和Active Directory模块:
前置准备
- 确保你的操作机器已安装Active Directory PowerShell模块:
- Windows Server:运行
Install-WindowsFeature RSAT-AD-PowerShell - Windows 10/11:通过「设置-应用-可选功能-添加功能」搜索安装「RSAT: Active Directory Domain Services and Lightweight Directory Tools」
- Windows Server:运行
- 目标机器需开启WinRM(域环境通常已通过GPO配置,若未开启可在单台机器上运行
Enable-PSRemoting -Force) - 运行脚本的账号需拥有所有目标机器的本地管理员权限
具体脚本
# 导入AD模块(若已加载可跳过) Import-Module ActiveDirectory # 获取AD中所有启用的计算机(可根据需求调整过滤条件,比如指定OU) # 示例:指定OU的话添加 -SearchBase "OU=Servers,DC=contoso,DC=com" $targetComputers = Get-ADComputer -Filter {Enabled -eq $true} | Select-Object -ExpandProperty Name # 远程执行文件夹创建命令,跳过无法连接的机器 Invoke-Command -ComputerName $targetComputers -ScriptBlock { # 强制创建文件夹(已存在则无操作) New-Item -Path "C:\Logs" -ItemType Directory -Force } -ErrorAction SilentlyContinue
验证结果
执行完后可以批量检查哪些机器创建成功:
Invoke-Command -ComputerName $targetComputers -ScriptBlock { Test-Path "C:\Logs" } -ErrorAction SilentlyContinue | Out-File -Path "C:\Logs_Creation_Results.txt"
打开生成的文本文件就能看到每台机器的结果(True表示成功,无结果表示无法连接)
方案二:组策略(GPO)推荐(适合大规模机器)
如果你的环境是域环境,100+台机器用组策略会更高效、更可靠,不需要处理远程连接的问题:
- 打开「组策略管理控制台」,新建一个GPO(比如命名为「Create C:\Logs Folder」)
- 编辑GPO:导航到计算机配置 -> 首选项 -> Windows设置 -> 文件夹
- 右键「文件夹」选择「新建 -> 文件夹」,路径填
C:\Logs,操作选择「创建」,可勾选「应用一次且不再重新应用」 - 将这个GPO链接到包含目标机器的OU,机器刷新组策略后(默认90分钟,可手动运行
gpupdate /force)就会自动创建文件夹
注意事项
- 若部分机器无法远程连接,检查WinRM服务是否运行、防火墙是否允许WinRM端口(默认5985)
- 执行脚本时建议先在少量测试机器上验证,再批量执行
内容的提问来源于stack exchange,提问作者UnleashedWAR
相关产品推荐
相关产品推荐

