2014-03-25 79 views
1

當使用UI(SCCM 2012)時,爲了能夠刪除集合(比方說CollA),首先需要確保它不被任何規則鏈接到另一個集合(讓我們說CollB,等..),如:從命令行中刪除SCCM集合

  • CollB包括科亞
  • CollC排除科亞

在有很多藏品的處理,刪除了一個集合可能是費時。出於這個原因,我創建了一個腳本,

  • 使用遠程以避免需要通過RDP連接
  • 它會檢查科拉沒有規則左(即使如果我們想刪除這不是一個問題科亞)
  • 用來檢查是否科亞被「鏈接」到其他收藏品(包括或排除規則)
  • 其刪除發現的任何規則(CollB和科拉之間,CollC和科亞之間)

我現在堅持我不能t找到一種方法來刪除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集合,曾經在$科拉,一個System.Management.ManagementObject檢索。 我應,如在MSDN頁所描述的,能夠使用下面的方法:

  • 刪除()>產生高於
  • 刪除(DeleteOptions)中提到的錯誤>我無法找到該規格所需的選項
  • 刪除(ManagementOperationObserver)>我無法找到所需的選項

爲了確保我正確地理解關於MSDN頁* .Delete(),我試圖(成功)以下規格:

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() 

EDIT 2

事實是,通過控制檯刪除SCCM集合時,集合是沒有從清單中移除的唯一的事:例如在分配,太刪除。它在處理MySQL或ORACLE時提醒了CASCADE開關。也許是我想要做的是不可能的

  • 不使用控制檯
  • 不使用SCCM的cmdlet

如果不能那麼做,我只是需要確定。

編輯3

一些成熟後,我開始懷疑它可能是一個授權問題。我的意思是,我使用「-credential」開關的帳戶或連接到服務器時打開SCCM控制檯的帳戶允許我創建/更新/刪除集合,但是,例如,它不允許我刪除設備。我希望錯誤信息會有所不同,但誰知道?

或多或少的關於同樣的事情(抱歉的離題),試圖從命令行中刪除設備,我發現this和我有相同的錯誤信息(見上文)。如果它適用於其他人而不是我,它可能是授權相關的嗎?

EDIT 4

我請求的服務帳戶與更多的「特權」比我有我的技術客戶。 我測試過,並且發生同樣的錯誤。我拋開授權假設。

+0

我假設它是一個你正在使用一個System.Management.ManagementObject,對不對?你檢出了[MSDN](http://msdn.microsoft.com/en-us/library/system.management.managementobject(v = vs.110).aspx)頁面來查看方法以及如何調用它們爲了它? – TheMadTechnician

+0

查看已更新的問題,跟隨您的潛在客戶, – projetnumero9

回答

0

我只是使用下面的命令測試這個在我們的SCCM 2012環境:

$CollA=Get-WmiObject -computername servername -namespace root\sms\site_111 -query "select * from SMS_Collection where Name='Tartempion'" 

基本上採取-credential離開那裏。它現在工作嗎?

+0

Raged,我嘗試過,從服務器刪除集合,此時不需要提及憑據,並且它不起作用(請參閱原始帖子中的錯誤)。我猜測由於CASCADE操作,我無法從命令行中刪除集合。 – projetnumero9

+0

我明白了,我可以重新創建問題。我創建了兩個集合。一個與另一個鏈接。如果我刪除首先被限制的集合,則刪除它的原始目標集合。 – Raged

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() 
    } 
+0

我誤導了你,或者我不明白你的建議。我的環境中的$ CollA沒有名爲LimitedCollectionName的屬性。它有一個名爲LimitToCollectionName的屬性,它指向一個集合,我不能也不想刪除它。我知道如何「斷開」兩個集合,不管鏈接如何(排除規則,包含規則等)。換句話說,我的問題是:如何從命令行刪除一個「孤兒」的集合? – projetnumero9