使用PowerShell将多个设备添加到SCCM集合
使用PowerShell,您可以轻松地将多个设备批量添加到SCCM设备集合中。使用本指南,您将能够使用ConfigMgr PowerShell将多个设备导入到目标设备集合中模块.
可能会出现这样的情况:您必须向SCCM中的集合添加几百个设备。如果是单个设备,则使用直接查询。然而,如果你有很多台电脑,每一台都要花很长时间。
多亏了PowerShell,因为它是向SCCM设备集合批量添加设备的更简单、更快的选择。我们将使用Add-CMDeviceCollectionDirectMembershipRule完成我们的任务,它将Direct Rule成员规则添加到设备集合中。更多信息在这里.
步骤1 -在SCCM中创建一个设备集合
- 打开SCCM控制台。去资产和合规>概述>设备集合.
- 点击创建设备集合在最上面的丝带里。
- 打开“创建设备收集向导”。指定新设备集合的名称并选择限制集合。点击下一个.
在会员规则Page,不要添加任何规则。点击下一个.
当您创建一个设备集合而没有添加任何资源时,您将得到一个警告。此集合没有成员规则……单击好吧因为稍后我们将把多个设备导入到这个设备集合中。
在“概要”页签,单击关闭.
在“完成”页面,单击关闭.
步骤2 -准备计算机列表
创建目标设备集后,准备一个TXT文件,其中包含您希望添加到设备集的所有设备。在本例中,文件名为List_computers.txt,包含以下设备。
步骤3 -使用ConfigMgr Powershell cmdlets导入计算机
在ConfigMgr控制台的顶部ribbon上,单击蓝色箭头并单击通过Windows PowerShell连接.
复制并粘贴下面的命令,不要忘记更改文本文件位置和目标集合名称。执行该命令。
Get-Content "E:\Sources\Import\List_computers.txt" | foreach {Add-CMDeviceCollectionDirectMembershipRule -CollectionName "Computer List" -ResourceID (Get-CMDevice -Name $_)ResourceID}
感谢Prajwal分享剧本。
我已经在我的组织中多次成功地使用它来批量创建设备集合。
只要有一个查询,一旦我们完成了PowerShell脚本执行,我们将得到准确的设备编号收集。
我观察到,几天后,收集设备有变化(增加/减少),并且一直在增加和减少。
根据我的理解,这个集合是静态的,数字不应该改变。
有人得到这个错误吗?
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
因为对象在你的目录中不存在。
你的文章总是很有用而且容易理解。谢谢楼主分享!
如果需要从列表中添加或删除服务器/系统,是像更新.txt文件那样简单,还是还需要再次执行powershell命令?
谢谢你的命令,它起作用了,节省了很多时间。
谢谢你的快速和简单的解决方案,工作如预期。
在Get-CMDevice后添加参数后,它对我来说是有效的。
Get-Content " xxx.txt " | foreach {Add-CMDeviceCollectionDirectMembershi
pRule -CollectionName " xxx " -ResourceID (Get-CMDevice -Name $_ -Resource)。ResourceID}
只需使用SCCM/MECM的免费“右键单击工具”软件,对于这个操作和其他一些华体会体育系列操作来说,它更快、更简单、更有效
该死,我甚至不知道,他们有这个功能!非常感谢
nervermind
我找到了=)
只需要改变几个参数。
谢谢
Get-Content " E:\Sources\Import\List_users.txt " | foreach {Add-CMUserCollectionDirectMembershipRule -CollectionName "用户列表" -ResourceID (Get-CMUser -Name $_)。ResourceID}
嗨
感谢这个脚本,实时节省时间。
你知道如何对用户集合做同样的事情吗?
谢谢你!
纯粹的天才!非常感谢!
对于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吗?
嘿,试试导入SCCM模块。
“Get-CMDevice”这些命令是sccm特定的命令
我以前也遇到过这种情况,但我不记得我是怎么熬过来的。有人能帮忙吗?
不工作。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
更正:工作后,我替换了通过此网页的复制cmdlet到我的剪贴板的引号。不知道他们为什么抄错了。此外,在powershell中看起来正确,但却是错误的字符。谢谢你的解决方案。
这是完美的!!
谢谢