2012年5月11日金曜日

[FIM 2010 / Scripts] FIM Portal のユーザ属性を変更する

前回は FIM Portal に直接ユーザを作る、というスクリプトを紹介しましたが、今回は FIM Portal 上のユーザの属性を直接変更するためのスクリプトです。


以下のコードを 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 件のコメント: