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