使用PowerShell将多个设备添加到SCCM集合

使用PowerShell,您可以轻松地将多个设备批量添加到SCCM设备集合中。使用本指南,您将能够使用ConfigMgr PowerShell将多个设备导入到目标设备集合中模块

可能会出现这样的情况:您必须向SCCM中的集合添加几百个设备。如果是单个设备,则使用直接查询。然而,如果你有很多台电脑,每一台都要花很长时间。

多亏了PowerShell,因为它是向SCCM设备集合批量添加设备的更简单、更快的选择。我们将使用Add-CMDeviceCollectionDirectMembershipRule完成我们的任务,它将Direct Rule成员规则添加到设备集合中。更多信息在这里

PatchMyPC HorizontalAD
修补我的电脑赞助广告

步骤1 -在SCCM中创建一个设备集合

  • 打开SCCM控制台。去资产和合规>概述>设备集合
  • 点击创建设备集合在最上面的丝带里。
  • 打开“创建设备收集向导”。指定新设备集合的名称并选择限制集合。点击下一个

在SCCM中创建设备集合

会员规则Page,不要添加任何规则。点击下一个

定义集合的成员规则

当您创建一个设备集合而没有添加任何资源时,您将得到一个警告。此集合没有成员规则……单击好吧因为稍后我们将把多个设备导入到这个设备集合中。

使用PowerShell Snap3将多个设备添加到SCCM集合

在“概要”页签,单击关闭

总结

在“完成”页面,单击关闭

完成

步骤2 -准备计算机列表

创建目标设备集后,准备一个TXT文件,其中包含您希望添加到设备集的所有设备。在本例中,文件名为List_computers.txt,包含以下设备。

使用PowerShell将多个设备添加到SCCM集合

步骤3 -使用ConfigMgr Powershell cmdlets导入计算机

在ConfigMgr控制台的顶部ribbon上,单击蓝色箭头并单击通过Windows PowerShell连接

使用PowerShell Snap7将多个设备添加到SCCM集合

复制并粘贴下面的命令,不要忘记更改文本文件位置和目标集合名称。执行该命令。

Get-Content "E:\Sources\Import\List_computers.txt" | foreach {Add-CMDeviceCollectionDirectMembershipRule -CollectionName "Computer List" -ResourceID (Get-CMDevice -Name $_)ResourceID}

使用PowerShell将多个设备添加到SCCM集合几分钟后(取决于计算机数量),设备集合导入任务应该完成。您将在SCCM中发现添加到设备集合中的所有设备。

留下回复

你的电邮地址将不会公布。必填字段已标记

19日的评论

  1. 《阿凡达》的照片 Amit Deore 说:

    感谢Prajwal分享剧本。
    我已经在我的组织中多次成功地使用它来批量创建设备集合。

    只要有一个查询,一旦我们完成了PowerShell脚本执行,我们将得到准确的设备编号收集。
    我观察到,几天后,收集设备有变化(增加/减少),并且一直在增加和减少。
    根据我的理解,这个集合是静态的,数字不应该改变。

  2. 《阿凡达》的照片 迈赫迪 说:

    有人得到这个错误吗?
    Add-CMDeviceCollectionDirectMembershipRule:不能将参数绑定到参数“ResourceId”,因为它是空的。
    第一行:1个字符:146
    +…alo Alto 10% " -ResourceID (Get-CMDevice -Name $_)。ResourceID}
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo: InvalidData:(:) [Add-CMDeviceCol…tMembershipRule], parameterbindingvalidationexception
    n
    + FullyQualifiedErrorId: parameterargumentvalidationerrornullnotallows,Microsoft.ConfigurationManagement.PowerSh . powersh . fulllyqualifiederrorid: parameterargumentvalidationerrornullnotallows
    ell.Cmdlets.Collections.AddDeviceCollectionDirectMembershipRule

    1. 《阿凡达》的照片 丛勒 说:

      因为对象在你的目录中不存在。

  3. 《阿凡达》的照片 Charita 说:

    你的文章总是很有用而且容易理解。谢谢楼主分享!

  4. 《阿凡达》的照片 RPPerry3 说:

    如果需要从列表中添加或删除服务器/系统,是像更新.txt文件那样简单,还是还需要再次执行powershell命令?

  5. 《阿凡达》的照片 Indrakumar 说:

    谢谢你的命令,它起作用了,节省了很多时间。

  6. 《阿凡达》的照片 铁人 说:

    谢谢你的快速和简单的解决方案,工作如预期。

  7. 《阿凡达》的照片 Xiaomeng 说:

    在Get-CMDevice后添加参数后,它对我来说是有效的。
    Get-Content " xxx.txt " | foreach {Add-CMDeviceCollectionDirectMembershi
    pRule -CollectionName " xxx " -ResourceID (Get-CMDevice -Name $_ -Resource)。ResourceID}

  8. 《阿凡达》的照片 美国能源部 说:

    只需使用SCCM/MECM的免费“右键单击工具”软件,对于这个操作和其他一些华体会体育系列操作来说,它更快、更简单、更有效

    1. 《阿凡达》的照片 Alexej F。 说:

      该死,我甚至不知道,他们有这个功能!非常感谢

  9. 《阿凡达》的照片 昆汀GUIOT 说:

    nervermind
    我找到了=)
    只需要改变几个参数。
    谢谢

    Get-Content " E:\Sources\Import\List_users.txt " | foreach {Add-CMUserCollectionDirectMembershipRule -CollectionName "用户列表" -ResourceID (Get-CMUser -Name $_)。ResourceID}

  10. 《阿凡达》的照片 昆汀GUIOT 说:


    感谢这个脚本,实时节省时间。
    你知道如何对用户集合做同样的事情吗?

    谢谢你!

  11. 《阿凡达》的照片 马克 说:

    纯粹的天才!非常感谢!

  12. 《阿凡达》的照片 罗恩deangelis 说:

    对于sccm和打包部署的新手。一步一步来。不知道这个解决方案会如何工作。当运行cmd时,我得到以下错误:

    Add-CMDeviceCollectionDirectMembershipRule:不能将参数绑定到参数“ResourceId”,因为它是空的。
    第一行:1字符:144
    +…ame " Sophos Machines " -ResourceID (Get-CMDevice -Name $_)。ResourceID}
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo: InvalidData:(:) [Add-CMDeviceCol…tMembershipRule], parameterbindingvalidationexception
    n
    + FullyQualifiedErrorId: parameterargumentvalidationerrornullnotallows,Microsoft.ConfigurationManagement.Cmdlets
    .Collections.Commands.AddDeviceCollectionDirectMembershipRuleCommand

    在我看来,如果我们试图用.txt文件中列出的机器填充我的sccm集合,该如何get - cmdevice知道要获取的设备的ResourceID吗?

    1. 《阿凡达》的照片 穆克什米 说:

      嘿,试试导入SCCM模块。
      “Get-CMDevice”这些命令是sccm特定的命令

  13. 《阿凡达》的照片 Ranjithkumar 说:

    我以前也遇到过这种情况,但我不记得我是怎么熬过来的。有人能帮忙吗?

  14. 不工作。TXT被正确引用。错误输出:如下所示:

    调出上面文章中的引号不喜欢复制粘贴或复制html网页的cmdlet。

    -ResourceID (Get-CMDevice -Name $_)。ResourceID}
    ForEach-Object:不能绑定参数“RemainingScripts”。无法转换类型的“Get-Content”值
    ”系统。输入“System.Management.Automation.ScriptBlock”。
    在行:1字符:53
    Add-CMDeviceCollectionDirectMembershipRule -Col…
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo: InvalidArgument:(:) [ForEach-Object], ParameterBindingException
    + fullyqualifiederorid: CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.ForEachObjectCommand

    1. 更正:工作后,我替换了通过此网页的复制cmdlet到我的剪贴板的引号。不知道他们为什么抄错了。此外,在powershell中看起来正确,但却是错误的字符。谢谢你的解决方案。

      1. 这是完美的!!
        谢谢