使用用户界面(SCCM 2012)时,为了能够删除一个集合(让我们说CollA),首先需要确保它不会被任何规则链接到另一个(让我们说CollB等。)如:
处理大量集合时,删除集合可能非常耗时。出于这个原因,我创建了一个脚本,
我现在卡住了,因为我无法找到删除CollA的方法。 对于身份验证和远程用途,我使用了很多Powershell和WMI。
$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
正如theMadTechnician所指出的,SCCM集合一旦在$ CollA中被检索到,就是一个System.Management.ManagementObject。 我应该,如MSDN页面中所述,能够使用以下方法:
为确保我正确理解有关* .Delete()的MSDN页面,我尝试(成功)以下内容:
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()
编辑2
事实是,当通过控制台删除SCCM集合时,集合不是唯一从库存中删除的东西:例如,分配也被删除了。它在处理MySQL或ORACLE时会提醒CASCADE开关。也许我想要做的事情是不可能的
如果不能这样做,我只需要确定。
编辑3
经过一段时间的成熟,我开始怀疑它是否属于授权问题。我的意思是,我正在使用&#34; -credential&#34;切换或连接到服务器时,打开SCCM控制台,允许我创建/更新/删除集合,但是,例如,它不允许我删除设备。我希望错误信息不同但谁知道?
或多或少关于相同的事情(抱歉离题),尝试从命令行中删除设备,我发现this并且我有相同的错误消息(见上文)。如果它适用于其他人而不是我,那么它是否与授权相关?
编辑4
我要求提供更多&#34;特权的服务帐户&#34;比我的技术帐户。 我测试过,我也有同样的错误。我暂时搁置授权假设。
答案 0 :(得分:0)
我刚刚在SCCM 2012环境中使用以下命令对此进行了测试:
$CollA=Get-WmiObject -computername servername -namespace root\sms\site_111 -query "select * from SMS_Collection where Name='Tartempion'"
基本上,从那里取出-credential。它现在有效吗?
答案 1 :(得分:0)
您可以设置如下脚本:
#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()
}