現在、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
が機能しない場合があります。このため
A簡単な例は次のようになります。
$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
まあその回避策を提供しています部分的な答えを:それはあなたのために...また
、あなたがSCSM内のプロパティを更新するためにパイプラインを使用することができ尋ね直接ではありませんが、おそらくこれは、助けることができます。私はパイプについて知っていましたが、問題が何かを示すためにコードを少しはっきりさせたいと思っていました。パイプを使用すると、処理が少し遅くなる可能性があります。プロダクションでは、私はただのユーザーしか読んでいません。 「異国的な」日付を使用することは間違っているように感じますが、今は最良の選択肢と思われます。 – Seth