2012-07-27 35 views
2

我們的應用程序將在本地用戶組中添加用戶列表。如何更新本地用戶組的用戶名?

用戶將與組關聯,如果更改了用戶名,我們可能需要將他們分組更新。

我試圖在PowerShell中使用[ADSI]來獲取列表,然後修改它。

[email protected]("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 
    } 
} 

但是直接傳遞groupname不被ADSI接受。如果與分配的組相關聯,如何更新用戶名?

+0

,然後組會被自動更新(唯一的ID,稱爲SID這裏救了我們:-)。所以這是添加和刪除用戶的重要問題。 – 2012-09-23 22:17:14

回答

0

你是否在你想檢查的每臺計算機上運行你的powershell腳本? 是否要將本地用戶添加到本地組? 可以嘗試類似的信息(當然管理員外殼內):如果用戶的名稱在用戶對象改變

$grp = [ADSI]"WinNT://$computerName/$groupName,group" 
$grp.add("WinNT://$computerName/$NewUserName") 
$grp.remove("WinNT://$computerName/$OldUserName")