You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过CSV/TXT列表批量将计算机移入WSUS组?

批量将计算机移入WSUS组的解决方法

你遇到的问题根源在于Get-WsusComputer的-NameIncludes参数仅支持单个字符串匹配,无法直接接收多个计算机名组成的数组。以下是针对TXT和CSV列表的可行批量处理方案:

针对TXT列表的处理脚本

假设你的D:\pc.txt每行存储一个计算机名(支持部分匹配,比如输入"winvm"会匹配所有名称含"winvm"的计算机):

# 连接目标WSUS服务器
$wsusServer = Get-WsusServer -Name "contoso"
# 定义目标WSUS组名称
$targetGroupName = "Windows Virtual Machines"
# 读取TXT中的计算机名列表,自动过滤空行
$computerNames = Get-Content D:\pc.txt | Where-Object { $_ -match '\S' }

foreach ($name in $computerNames) {
    $cleanName = $name.Trim()
    # 查找匹配的WSUS计算机对象
    $wsusComputer = $wsusServer | Get-WsusComputer -NameIncludes $cleanName
    if ($wsusComputer) {
        # 将计算机添加到目标组
        $wsusComputer | Add-WsusComputer -TargetGroupName $targetGroupName
        Write-Host "成功将 [$cleanName] 移入目标组"
    } else {
        Write-Warning "未找到名称包含 [$cleanName] 的计算机"
    }
}

针对CSV列表的处理脚本

如果你的计算机信息存储在CSV中(比如包含完整计算机名、域名等),假设CSV格式如下:

ComputerName
WINVM01.contoso.com
WINVM02.contoso.com
WINVM03

使用以下脚本处理:

$wsusServer = Get-WsusServer -Name "contoso"
$targetGroupName = "Windows Virtual Machines"
# 导入CSV数据
$computerList = Import-Csv D:\computers.csv

foreach ($entry in $computerList) {
    $cleanName = $entry.ComputerName.Trim()
    $wsusComputer = $wsusServer | Get-WsusComputer -NameIncludes $cleanName
    if ($wsusComputer) {
        $wsusComputer | Add-WsusComputer -TargetGroupName $targetGroupName
        Write-Host "成功将 [$cleanName] 移入目标组"
    } else {
        Write-Warning "未找到名称包含 [$cleanName] 的计算机"
    }
}

额外优化建议

  • 如果需要精确匹配计算机名(而非部分包含),可以将查找逻辑替换为:
    $wsusComputer = $wsusServer | Get-WsusComputer | Where-Object { $_.FullDomainName -eq $cleanName -or $_.Name -eq $cleanName }
    
  • 确保运行脚本的账号拥有WSUS服务器的管理员权限
  • 检查TXT/CSV文件编码为UTF-8(无BOM),避免特殊字符或乱码导致匹配失败

内容的提问来源于stack exchange,提问作者morfus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 01:20:29