Powershell ForEach如果“True”执行删除操作

时间:2013-10-17 20:58:58

标签: powershell sccm

以下代码似乎可以工作但只需要在一台机器上运行一些,如果对象不存在,我也无法完全测试它。如果我正确地处理过程或者有更简单/更快的方法,我将不胜感激。

$SCCMObj = get-wmiobject -query "select * from SMS_R_SYSTEM WHERE Name='$env:computername'" -computername [SMSServer] -namespace "ROOT\SMS\site_[SiteCode]"
$PSB = $SCCMObj.psbase
$PSBSR = $SCCMObj.psbase.syncroot
$PSBLgth = $SCCMObj.psbase.length
$SCCMArray = @($PSB, $PSBSR, $PSBLgth)
$SCCMArray | ForEach {If ($_ -ne $Null) {$SCCMObj.psbase.delete()}}

目的是找到驻留在数据库中的任何/所有SCCM计算机对象,并通过PowerShell删除每个对象。代码来自:http://marco-difeo.de/2011/08/02/sccm-delete-computer-object-via-powershell-and-wmi/ 非常感谢!

1 个答案:

答案 0 :(得分:0)

根据你提到的原始博文,我会这样处理:

if ($SCCMObj.psbase.syncroot) {
    $SCCMObj.psbase.syncroot | Foreach { $_.psbase.delete() }
}
else {
    SCCMObj.psbase.delete()
}