我用 C# 開發(fā)了一個 Active Directory 用戶管理工具,它可以自動執(zhí)行一些操作。對于我的特殊情況,這比 Microsoft 的“Active Directory 用戶和計算機”工具更好。我必須使用包含用戶用戶名的漫游配置文件和主目錄。現(xiàn)在我想用我的 C# 程序更改用戶的用戶名。一切正常,但我想使用“%username%”變量而不是將新用戶名直接放入這些路徑(主目錄和漫游配置文件),因為通過使用該變量,我確保將放置新用戶名如果我使用 Microsoft 的 AD 管理工具(右鍵單擊 -->“復制”)復制用戶對象,則進入這些路徑。如果我在使用 Microsoft 的 AD 工具創(chuàng)建或編輯用戶時輸入“%username%”,此變量將被用戶名替換,因此可以正常工作。但是如果我使用 C# 將此變量放入路徑中,它只會將字符串“%username%”放在路徑的末尾(例如“\fileserver1\UserHomes\%username%”)。它不會用實際的用戶名替換它并“存儲”該占位符。如何在我的 C# 代碼中正確使用此變量,以便將其替換為實際用戶名?我正在使用此代碼(簡化,這只是一個示例)來更改用戶的用戶名(SamAccountName),例如,主目錄。“用戶”是我的 UserPrincipal 對象。當然,我在此之后重命名實際文件夾:[...]string newUsername = "NewUsername"; // New usernameuser.SamAccountName = newUsername;user.UserPrincipalName = $"{ newUsername }@{ domain }";user.HomeDirectory = "\\fileserver1\UserHomes\%username%";user.Save(); // Save changes
2 回答

蕪湖不蕪
TA貢獻1796條經(jīng)驗 獲得超7個贊
環(huán)境變量和使用的%username%
AD Users and Computers 不一樣。當您單擊確定時,AD 用戶和計算機會立即將其替換為實際用戶名值。它不是 AD 理解的東西,只是 AD 用戶和計算機應用程序使用的令牌。
考慮到您已經(jīng)使用用戶名構(gòu)建了一個字符串,您應該不會發(fā)現(xiàn)很難解決這個問題。
user.HomeDirectory = $"\\fileserver1\UserHomes\{newUsername}";
powershell 也可能更適合這樣的事情。
- 2 回答
- 0 關(guān)注
- 118 瀏覽
添加回答
舉報
0/150
提交
取消