Powershell 从命令行中删除SCCM集合
在使用UI(SCCM 2012)时,为了能够删除一个集合(比如CollA),您首先需要确保它没有被任何规则链接到另一个集合(比如CollB等),例如:Powershell 从命令行中删除SCCM集合,powershell,wmi,sccm,Powershell,Wmi,Sccm,在使用UI(SCCM 2012)时,为了能够删除一个集合(比如CollA),您首先需要确保它没有被任何规则链接到另一个集合(比如CollB等),例如: CollB包括CollA CollC不包括CollA 处理大量集合时,删除集合可能非常耗时。因此,我创建了一个脚本 可远程使用,无需通过RDP进行连接 检查COLA是否没有剩余的规则(如果我们要删除COLA,即使这不是问题) 检查COLA是否“链接”到其他集合(包括或排除规则) 这将删除找到的任何规则(在CollB和CollA之间,在Col
- CollB包括CollA
- CollC不包括CollA
- 可远程使用,无需通过RDP进行连接
- 检查COLA是否没有剩余的规则(如果我们要删除COLA,即使这不是问题)
- 检查COLA是否“链接”到其他集合(包括或排除规则)
- 这将删除找到的任何规则(在CollB和CollA之间,在CollC和CollA之间)
$CollA=Get-WmiObject -computername servername -namespace root\sms\site_111 -credential $cred -query "select * from SMS_Collection where Name='Tartempion'"
$CollA.get()
此时,我发现了一个Delete()方法,当我尝试使用它时,它会给出:
Exception calling "Delete" with "0" argument(s): "Generic failure "
At line:1 char:1
+ $coll.delete()
+ ~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
如果这是我应该使用的方法,那么要传递的参数是什么
编辑1
正如MadTechnician所指出的,SCCM集合一旦在$CollA中检索,即为System.Management.ManagementObject。
如MSDN页面所述,我应该能够使用以下方法:
- Delete()>产生上述错误
- 删除(删除选项)>我找不到所需选项的规格
- 删除(ManagementOperationObserver)>我找不到所需选项的规格
PS C:\> Set-WmiInstance -Class win32_environment -argument @{Name="testvar";VariableValue="testvalue";UserName="<SYSTEM>"}
PS C:\> (gwmi -class win32_environment -filter "Name='testvar'").gettype()
PS C:\> (gwmi -class win32_environment -filter "Name='testvar'").delete()
PS C:\>Set WmiInstance-Class win32\u环境-argument@{Name=“testvar”;VariableValue=“testvalue”;UserName=”“}
PS C:\>(gwmi-class win32\u环境-filter“Name='testvar')。gettype()
PS C:\>(gwmi-class win32_环境-filter“Name='testvar')。删除()
编辑2
事实上,当通过控制台删除SCCM集合时,集合并不是从清单中删除的唯一内容:例如,分配也被删除。当处理MySQL或ORACLE时,它提醒我们级联开关。也许我想做的是不可能的
- 不使用控制台
- 不使用SCCM cmdlet
我测试过了,我也有同样的错误。我把授权假设放在一边。我刚刚在我们的SCCM 2012环境中使用以下命令对此进行了测试:
$CollA=Get-WmiObject -computername servername -namespace root\sms\site_111 -query "select * from SMS_Collection where Name='Tartempion'"
基本上,把-credential拿出来。它现在可以工作了吗?您可以这样设置脚本:
#if the delete command fails...
if(!($?))
{
$limitedcollectionName = $colla.LimitedCollectionName
$limitedcollection = Get-WmiObject -computername servername -namespace root\sms\site_111 -query "select * from SMS_Collection where Name=`'$limitedcollectionname`'"
$limitedcollectionname.delete()
}
我假设您使用的是System.Management.ManagementObject,对吗?您是否已签出该页面以查看方法以及如何调用它们?请参阅问题更新,跟随您的线索,Raged,我尝试过,从服务器中删除集合,此时不需要提及凭据,并且不起作用(请参阅原始帖子中的错误)。我猜由于级联操作,我无法从命令行删除集合。我明白了,我可以重新创建该问题。我创建了两个集合。链接者与另一个链接的人。如果我先删除限制为的收藏,然后再删除它有效的原始目标收藏。我误导了你或者我不理解你的建议$我的环境中的CollA没有名为LimitedCollectionName的属性。它有一个名为LimitToCollectionName的属性,它指向一个集合,我不能也不想删除该集合。我知道如何“取消”两个集合的链接,无论链接是什么(排除规则、包含规则等)。换言之,我的问题是:如何从命令行中删除一个“孤立”的集合?