PowerShell 将集合移动到 SCCM 中的另一个文件夹?

问题描述 投票:0回答:1

我有一个在 SCCM 中创建集合的脚本,但我需要在“设备集合”下的子文件夹之一中创建它。我无法弄清楚如何使用 WMI 类移动集合。由于此脚本不在 SCCM 服务器本身上运行,因此我无法使用 configmanager 模块来实现

Move-CMobject
。有没有办法使用下面的 PowerShell 代码风格来实现集合移动?

$CMCollection = ([WMIClass]”\root\sms\site_:SMS_Collection”).CreateInstance()
$CMCollection.name = $CollectionName
$CMCollection.LimitToCollectionID = “12345678”
$CMCollection.RefreshType = 2
$CMCollection.Put()
powershell wmi sccm
1个回答
2
投票

您需要类 SMS_ObjectContainerItem 的方法 MoveMembers。创建集合后(据我所知,不可能在正确的路径中创建)。

powershell 代码将是这样的:

[Array]$DeviceCollectionID = <CollID>
$TargetFolderID = <ContainerNodeID>
$CurrentFolderID = 0
$ObjectTypeID = 5000

Invoke-WmiMethod -Namespace 'Root\SMS\Site_<SiteCode>' -Class 'SMS_objectContainerItem' -Name 'MoveMembers' -ArgumentList $CurrentFolderID,$DeviceCollectionID,$ObjectTypeID,$TargetFolderID

要获取目标文件夹的 ContainerNodeID,您可以使用如下查询:

select * from sms_objectcontainernode where objecttypeName = 'sms_collection_device' and Name = <your target folder name>

我没有找到 ObjectIDTypes 的有效 ms 源,但从我自己的程序和几个示例中我知道 5000 用于集合文件夹。如果您刚刚以编程方式创建了某些内容,则 CurrentFolderID 始终为 0,因为它将位于根目录中。对于现有文件夹,您可以按照与目标相同的方式计算出来。

还有来自一些代码示例的列表我发现它没有来源,但可能是正确的。

Object type 2 - Package Folder
Object type 7 - Query Folder
Object type 9 - Software Metering Folder
Object type 14 - Operating System Installers Folder
Object type 17 - State Migration GFolder
Object type 18 - Image Package Folder
Object type 19 - Boot Image Folder
Object type 20 - Task Sequence Folder
Object type 23 - Driver Package Folder
Object type 25 - Driver Folder
Object type 2011 - Configuration Baseline Folder
Object type 5000 - Device Collection Folder
Object type 5001 - User Collection Folder
Object type 6000 - Application Folder
Object type 6001 - Configuration Item Folder

如果您需要某种缺少的类型,您还可以查看 sms_objectcontainernode 实例,然后检查给定文件夹的类型

© www.soinside.com 2019 - 2024. All rights reserved.