AD グループをプログラムで SPGroup に追加しようとしましたが、機能していません。
私はもう試した:
SPGroup.AddUsers("myADgroup");
と
SPGroupCollection.Add(groupName, currentUser, "myADgroup", groupDescription);
ドメインありとなしの両方で試しました。
何か案は?
AD グループをプログラムで SPGroup に追加しようとしましたが、機能していません。
私はもう試した:
SPGroup.AddUsers("myADgroup");
と
SPGroupCollection.Add(groupName, currentUser, "myADgroup", groupDescription);
ドメインありとなしの両方で試しました。
何か案は?
こんにちは、今のところ AD グループを追加する方法はありません。
最初にグループを作成し、その後、そのグループにユーザーを追加する必要があります。
using (SPSite spSite = new SPSite("http://localhost"))
{
using (SPWeb spWeb = spSite.OpenWeb())
{
SPGroupCollection spGrps = spWeb.SiteGroups;
SPUser uGrpOwner = spWeb.CurrentUser;
SPUser uGrpDefMember = spWeb.CurrentUser;
string sGrpName = "GrupeName";
spGrps.Add(sGrpName, uGrpOwner, uGrpDefMember, "Decription");
SPGroup spGrp = spGrps[sGrpName];
List<SPUser> spUsersFromAD = YouFunctionGetUserFromAD();
foreach(SPUser spUser in spUsersFromAD){
spGrp.AddUser(spUser);
}
spWeb.Update();
}
}
これは、Andy Burn's answer からのフォローアップです。
PowerShell から、最初に次のことを試しました。
$web = Get-SPWeb http://localhost
$web.EnsureUser("domain\test group")
これはうまくいきませんでした。
さらに実験を行ったところ、次の方法でうまくいくことがわかりました (Power Users は組み込みのグループです)。
$web.EnsureUser("builtin\power users")
$web.EnsureUser("power users")
$web.EnsureUser("test group")
その後、名前 (PowerShell では DisplayName のエイリアス) の値が異なることに気付きました。Active Directory では、'グループ名' と 'グループ名 (Windows 2000 以前)' に異なる値を使用していたことがわかりました。
グループ名はそれ自体で機能しましたが、Windows 2000 以前の名前を使用する必要があったドメイン プレフィックスを使用していました。
これにより、以下を機能させることができました。
$web.EnsureUser("domain\pre2000 test group")
そのため、問題が解決しない場合は、AD の 2 つのグループ名の一貫性を確認してください。
また、ADグループでSPWeb.EnsureUserを呼び出す際に問題が発生しました。私の場合、問題のグループの表示名が基になるsAMAccountNameとは異なるため、混乱が生じました。表示名ではなくsAMAccountNameを使用してEnsureUserを呼び出すと、問題が分類されました。