域内启用状态Windows 10计算机导出CSV及格式优化求助
解决AD中提取启用状态Windows 10计算机并导出CSV的问题
修正后的完整脚本
# 提取启用状态的Windows 10计算机,添加分号并导出CSV Get-ADComputer -Filter "OperatingSystem -like '*Windows 10*' -and Enabled -eq `$true" ` -Properties OperatingSystem | Select-Object @{Name='ComputerName'; Expression={"$($_.Name);"}}, OperatingSystem | Export-Csv -Path "C:\Temp\Win10PCinAD.csv" -NoTypeInformation -Encoding UTF8
问题拆解与解决说明
- 过滤禁用计算机:在AD查询阶段直接加入
Enabled -eq $true条件,只返回启用状态的计算机,避免后续过滤浪费资源。注意Filter使用字符串格式,转义$为`$以适配双引号语法。 - 移除名称多余空格:原命令使用
Format-Table (FT)会为控制台输出添加格式化空格,且输出的是格式化对象而非原始AD数据,导致CSV导出异常。改用Select-Object直接处理原始属性,彻底避免多余空格。 - 添加名称末尾分号:通过计算属性(Calculated Property)将
Name字段处理为"$($_.Name);",生成带分号的计算机名称,满足GPO复制需求。 - 正确导出CSV:直接从
Select-Object的结构化结果导出CSV,同时指定-Encoding UTF8避免中文乱码问题。
更便捷的纯名称导出(直接用于GPO复制)
如果只需要分号分隔的计算机名称,可直接导出到文本文件,复制时更方便:
# 导出分号分隔的计算机名称到文本文件 Get-ADComputer -Filter "OperatingSystem -like '*Windows 10*' -and Enabled -eq `$true" | ForEach-Object {"$($_.Name);"} | Out-File -Path "C:\Temp\Win10PCNames.txt" -Encoding UTF8
内容的提问来源于stack exchange,提问作者S.Mahmood
相关产品推荐
相关产品推荐

