我正在嘗試使用PowerShell腳本爲SCSM(System Center Service Manager)中的用戶對象同步來自AD(Active Directory)的其他屬性。
我爲此編寫的擴展包括AD用戶帳戶的有效日期屬性(DateTime
值,如示例中名爲DateTimeAttribute
),如果用戶帳戶未過期,它應該爲空/空。
使用Import-SCSMInstance
,應該類似於CSV導入,它通過傳遞"null"
作爲該字段的工作方式。問題是,Import-SCSMInstance
似乎是相當不可靠的,它不提供任何形式的信息爲什麼它的工作或不工作。使用Update-SCSMClassInstance
似乎工作得更好,但我無法找到一種方法來清除使用此字段,甚至使用[DateTime]::MinValue
將導致一個錯誤,指出它是一個無效的值。
那麼誰會有想法如何清除價值使用Update-SCSMClassInstance
或找出爲什麼Import-SCSMInstance
可能會或可能不會工作?
這一個簡單的例子如下所示:
$server = "<ServerName>"
$extensionGuid = "<GUID>"
Import-Module 'C:\Program Files\System Center 2012 R2\Service Manager\Powershell\System.Center.Service.Manager.psd1'
New-SCManagementGroupConnection -ComputerName $server
$extensionClass = Get-SCSMClass -Id $extensionGuid
$scsmUserObject = Get-SCSMClassInstance -Class $extensionClass -Filter 'UserName -eq "<User>"'
# Error
$scsmUserObject.DateTimeAttribute = ""
# Works but fails on Update-SCSMClassInstance
$scsmUserObject.DateTimeAttribute = $null
$scsmUserObject.DateTimeAttribute = [DateTime]::MinValue
# Works
$scsmUserObject.DateTimeAttribute = "01-01-1970"
Update-SCSMClassInstance -Instance $scsmUserObject
那麼它的部分答案,提供了一個解決方法。我知道管道,但想讓代碼更清楚一些,以顯示問題所在。使用這些管道可能會加快這一過程。在生產中,我不只是閱讀一個用戶。使用「古怪的」日期感覺有點不對勁,但似乎是現在最好的選擇。 – Seth