以下のコードを ps1 ファイルとして保存して実行します。(例では ModifyFIMUser.ps1 として保存)
# # 引数 # 0 : 対象ユーザの表示名(DisplayName) # 1 : 属性名、属性値ペア(「:」区切り) # set-variable -name URI -value "http://localhost:5725/resourcemanagementservice" -option constant clear If(@(Get-PSSnapin | Where-Object {$_.Name -eq "FIMAutomation"} ).count -eq 0) {Add-PSSnapin FIMAutomation} $accountName=$args[0] $Filter = "/Person[DisplayName=$accountName]" $attribute = ($args[1]).split(":")[0] $value = ($args[1]).split(":")[1] $object = export-fimconfig -uri $URI -onlyBaseResources -customconfig ($Filter) -ErrorVariable Err -ErrorAction SilentlyContinue function GetAttributeValue($exportObject,[string] $name) { $attribute = $exportObject.ResourceManagementObject.ResourceManagementAttributes | Where-Object {$_.AttributeName -eq $name} if ($attribute -ne $null -and $attribute.Value) { $attribute.Value } } $objectID = GetAttributeValue $object "ObjectID" $objectType = GetAttributeValue $object "ObjectType" $importChange = New-Object Microsoft.ResourceManagement.Automation.ObjectModel.ImportChange $importChange.Operation = 1 $importChange.AttributeName = $attribute $importChange.AttributeValue = $value $importChange.FullyResolved = 1 $importChange.Locale = "Invariant" $importObject = New-Object Microsoft.ResourceManagement.Automation.ObjectModel.ImportObject $importObject.ObjectType = $objectType $importObject.TargetObjectIdentifier = $objectID $importObject.SourceObjectIdentifier = $objectID $importObject.State = 1 $importObject.Changes = (,$importChange) $importObject | Import-FIMConfig -uri $URI -ErrorVariable Err -ErrorAction SilentlyContinue write-host "completed"
引数は、以下の通りです。
第1引数:対象ユーザの表示名
第2引数:変更したい属性名と更新する値のペア(「:(コロン)」区切り)
例えば、表示名が「テスト太郎」のユーザの姓を「テスト1」に変えたければ、
.\ModifyFIMUser.ps1 テスト太郎 "LastName:テスト1"
という形でスクリプトを実行します。
うまく行くと
completed
と出てくるのでポータル画面で確認します。
(実際はエラーハンドル処理を全く入れていないので失敗しても completed とでますw)
尚、前回も書きましたが、あくまで本環境では CSV Management Agent + ISR を使うのを推奨します。
0 件のコメント:
コメントを投稿