我目前正在尝试使用 PowerShell 脚本从 AD (Active Directory) 为 SCSM (System Center Service Manager) 中的用户对象同步其他属性。
我为此编写的扩展包括一个 AD 用户帐户的到期日期属性(DateTime
值,在示例中命名DateTimeAttribute
),如果用户帐户未到期,则它应该为空/null。
使用Import-SCSMInstance
应该类似于 CSV 导入,它通过传递"null"
字段来工作。问题是这Import-SCSMInstance
似乎非常不可靠,并且它没有提供任何关于它为什么工作或不工作的信息。usingUpdate-SCSMClassInstance
似乎工作得更好,但我想不出一种方法来使用它清除字段,甚至 using[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