2

このアプリケーションは、ローカル ユーザー グループにユーザーのリストを追加します。

ユーザーはグループに関連付けられます。ユーザー名が変更された場合、グループで更新する必要がある場合があります。

最初にリストを取得してから変更するために、powershellで[ADSI]を使用しようとしていました。

$MyprojGroups=@("Myproj Engineers",
             "Myproj Managers",
             "MyprojDBUser",
             "MyprojUser")

Foreach( $MyprojGroup in $MyprojGroups) {
    Write-host "MyprojGroup : $MyprojGroup "
    $usergroup=[ADSI]($MyprojGroup).psbase.Path
    $usergroup

    UpdateUserName -groupName $usergroup -OlduserName "Administrator" -NewuserName "Admin"

}

Function UpdateUserName {
Param (
    [string]$OlduserName,
    [string]$groupName,
    [string]$NewuserName
)

    # To check whether the user name is associated with the group
$MEm=$groupName.psbase.Invoke("Members") | foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}

   If ($mem -eq "OlduserName") {

       # Has to update the New User Name 
   }
}

ただし、グループ名を直接渡すことは、ADSI では受け入れられません。割り当てられたグループに関連付けられている場合、ユーザー名を更新する方法は?

4

1 に答える 1

0

チェックしたい各コンピューターでpowershellスクリプトを実行しますか?ローカル ユーザーをローカル グループに追加しますか? (もちろん管理者シェル内で)次のようなことを試すことができますか:

$grp = [ADSI]"WinNT://$computerName/$groupName,group"
$grp.add("WinNT://$computerName/$NewUserName")
$grp.remove("WinNT://$computerName/$OldUserName")
于 2012-11-17T19:44:07.170 に答える