您需要SMS_ObjectContainerItem 类的方法MoveMembers。创建集合后(无法在正确的路径中创建 afaik)。
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' where Name =<your target folder name>
我没有找到 ObjectIDTypes 的有效 ms 源,但从我自己的程序和几个示例中,我知道 5000 用于集合文件夹。如果您刚刚以编程方式创建了某些内容,则 CurrentFolderID 始终为 0,因为它将位于根目录中。对于现有文件夹,您可以按照与目标相同的方式来计算它。
我还发现some code sample 的这个列表没有来源,但可能是正确的。
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 实例并检查给定文件夹的类型