PCだい「ちゅき」

気がつけば庶事手伝い

目次

Blog 利用状況

ニュース

・H24/01/02
 Microsoft MVPを受賞しました
・H23/11/18
 MCTの憂鬱さんと相互リンクを張っていただきました^^
・H23/09/10
 プログラミング生放送でスピーカーさせていただきました^^ ・H22/12/18
 わんくま同盟でスピーカしました^^
さて、来年はどんな年になるかな。予想が当たるといいなぁ。
・H22/07/17
 わんくま同盟でスピーカしました^^
技術系のセッションは久しぶり。VB! VB!
・H22/03/13
 Tech FieldersでLTのスピーカしました^^
・H21/12/12
 わんくま同盟でスピーカしました^^
最近はずっとLT担当だったので、ちょっと新鮮でした^^
・H20/11/18
 Tech Fielders セミナー 大阪の
 Lightning Talkで優勝しました^^
・H20/8/23
 わんくま同盟で2回目のスピーカしちゃいました
 WCFと戯れてみました^^
・H20/5/17
 わんくま同盟でスピーカしちゃいました^^
 ちゃんとスピーカー持参しましたよんw
・H20/2/22
 なめ猫の参加証もらいました^^
・H20/1/22
 テンプレートを変えてみました^^
・H19/7/23
 ACEプログラムで、ナップサックをもらった上、工具セットももらえることになりました^^
・H19/1/11
 1が並ぶ縁起の良い日に投稿開始!。今後ともお付き合いよろしくお願いします
・H18/10/29
 参加させていただきました^^
ド・初心者ですがどうぞよろしくお願いします。

↓うーん、仕事しろ^^;
Chukiの脳内メーター

Chukiの脳内メーター

書庫

日記カテゴリ

ギャラリ

コミュニティ

相互リンク

PowerShellとCSVでグループに所属するユーザーを管理しよう

PowerShell Advent Calendar 2012」向け第3弾!!

グループとユーザーの管理といえば、Forefront Identity Managerでスマートに処理するとかVBScriptでゴリゴリ書いていたりしました。今の時代、サクっと作るのならPowerShellが楽ちんです。ということで、以下の要件で遊んでみます。

【要件】CSVでグループのメンバーを管理する

【テスト環境】

・OU:Osakaに以下の二人のユーザーが所属する。
 ・ユーザー:ChukiTestはou内のグループには入っていない
 ・ユーザー:hogehogeはadminグループとuserグループに所属している

【目標】

ユーザー:ChukiTestをOsakaのdirectorとuserグループに所属させ、hogehogeはuserグループのみとする

image

【方針】

CSV一行を読んだ後、そのユーザーが所属するグループすべて方一旦削除して、その後それぞれのグループへ所属させる

【CSV】

test.csv
name,group1,group2,group3
ChukiTest,”CN=director,OU=Osaka,OU=wankuma,DC=chukitest,DC=local”," CN=user,OU=Osaka,OU=wankuma,DC=chukitest,DC=local”
hogehoge,"CN=user,OU=Osaka,OU=wankuma,DC=chukitest,DC=local”


1、まず初めに困ること:CSVの取り込み

通常はユーザーごとに所属するグループ数が違うため、CSVの列も可変長になります。さて、ここで困るのがCSVが基本的には列の数が固定なので微妙に扱えない。可変長の場合、Excelを使って突っ込むなんてのが楽です。今回はActive Directoryの話に絞りたいので読み込みに関しては以下のリンク先などをご覧ください。
ご参考⇒フォルダー内にあるエクセルのデータをPowershell で取得する。 ≪ Windows Server 2012 Essentials と Windows SBS を中心とした雑記
http://wsbs.wordpress.com/2012/02/25/folder/

ということで、まずは読み込んだデータを突っ込むための変数を作ってみましょう。{名前、グループの配列}というオブジェクトを作ってみます

$objRow = New-Object PSObject| select Name,Groups
$objRow.Groups = New-Object System.Collections.ArrayList

とりあえず、オブジェクトには直接値を突っ込んでおきます。

$objRow.Name = "ChukiTest"
$objRow.Groups = @("CN=user,OU=Osaka,OU=wankuma,DC=chukitest,DC=local"
       ,"CN=director,OU=Osaka,OU=wankuma,DC=chukitest,DC=local")
 

2、現在所属しているグループから外す

ユーザーが入っているグループのうち、OUに所属するものだけを取得して削除しましょう。BUILTINなどから外すと後々面倒なので……
あと、-confirm:$falseをつけておかないと、毎行確認が表示されます。

$objUser = Get-ADUser hogehoge -Properties memberof
$objMemberGroup = $objUser | select MemberOf -ExpandProperty MemberOf | ? {$_ -like "*,OU=wankuma,*"}
$objMemberGroup | foreach { Remove-ADGroupMember $_ $objUser.Name -Confirm:$false }
 

3、Groupsに読み込まれた新しいグループへユーザーを追加する

ここは、単にforeachで回すだけです。
$objRow.Groups | foreach { Add-ADGroupMember $_ $objRow.Name}
 

4、あとは、これをCSVの行数分を繰り返すだけ

以上、さっくり出来上がり^^


従来のVBSと比べて楽になった点は、リダイレクトが多様できるため、いちいち変数に保存する必要がないため行数は短くなりました。
個人的な感想ではVBSとくらべて2/3位は減っていると思います。
また、VBSでゴリゴリ書くよりもITProに見やすくなっていると感じます。

ということで、是非ADの管理にはPowerShellを使いましょう^^/

投稿日時 : 2012年12月22日 6:21

Feedback

# Hi, I do believe this is an excellent site. I stumbledupon it ;) I am going to come back once again since I saved as a favorite it. Money and freedom is the best way to change, may you be rich and continue to help other people. 2019/04/11 2:27 Hi, I do believe this is an excellent site. I stum

Hi, I do believe this is an excellent site. I stumbledupon it ;
) I am going to come back once again since I saved as a favorite it.
Money and freedom is the best way to change, may
you be rich and continue to help other people.

# My partner and I stumbled over here coming from a different web address and thought I might as well check things out. I like what I see so i am just following you. Look forward to finding out about your web page repeatedly. 2019/05/13 22:23 My partner and I stumbled over here coming from a

My partner and I stumbled over here coming from a different web address and thought I might as well check things out.

I like what I see so i am just following you. Look forward to finding out about your web page repeatedly.

# Howdy just wanted to give you a quick heads up. The text in your article seem to be running off the screen in Safari. I'm not sure if this is a format issue or something to do with web browser compatibility but I figured I'd post to let you know. The de 2019/06/08 13:04 Howdy just wanted to give you a quick heads up. Th

Howdy just wanted to give you a quick heads up.
The text in your article seem to be running off the screen in Safari.
I'm not sure if this is a format issue or something to do with web browser compatibility but
I figured I'd post to let you know. The design look great though!
Hope you get the issue resolved soon. Cheers

# ezHpypLTOJtLND 2019/11/07 19:21 https://www.suba.me/

Lk196B Its hard to find good help I am forever proclaiming that its hard to procure good help, but here is

# We are a group of volunteers and opening a new scheme in our community. Your website offered us with valuable information to work on. You've done an impressive job and our entire community will be thankful to you. 2019/11/09 23:45 We are a group of volunteers and opening a new sch

We are a group of volunteers and opening a new scheme in our community.
Your website offered us with valuable information to work on. You've done an impressive job and our entire community will be thankful to you.

# mVWssKssIEZQqPAfCS 2019/11/12 9:40 https://orcid.org/0000-0001-9040-9640

I think one of your current ads caused my internet browser to resize, you might well need to get that on your blacklist.

# yZXbimoVrmCoLp 2019/11/13 4:36 https://talktopaul.com/glendale-real-estate-agent

I think other web site proprietors should take this website as an model, very clean and magnificent user friendly style and design, as well as the content. You are an expert in this topic!

# tEHxWXSnGuMa 2019/11/13 6:46 https://talktopaul.com/south-pasadena-real-estate-

Thanks for sharing, this is a fantastic blog.Thanks Again. Awesome.

# YzmYzxDKpgcq 2019/11/13 8:56 https://www.talktopaul.com/valley-village-real-est

Utterly pent content material , appreciate it for selective information.

# bRpneHmZggbkSfbdz 2019/11/13 11:05 https://www.talktopaul.com/silverlake-real-estate

Thanks again for the post.Much thanks again. Fantastic.

# pdHUSKIcJZrpHlZD 2019/11/13 13:14 https://www.talktopaul.com/burbank-real-estate

I'а?ve learn some good stuff here. Certainly price bookmarking for revisiting. I surprise how so much effort you place to make the sort of great informative website.

# WrYlkgENWfHMx 2019/11/14 0:28 https://customapparelblog.com/

There is definately a lot to find out about this subject. I really like all the points you have made.

# gkxqNjfDcUVGblzVGQj 2019/11/14 2:49 https://www.siatex.com

This is a really good tip especially to those new to the blogosphere. Short but very precise info Many thanks for sharing this one. A must read post!

# fantastic put up, very informative. I'm wondering why the other experts of this sector do not understand this. You should proceed your writing. I'm confident, you've a huge readers' base already! 2019/11/15 11:31 fantastic put up, very informative. I'm wondering

fantastic put up, very informative. I'm wondering why the other experts
of this sector do not understand this. You should proceed your writing.
I'm confident, you've a huge readers' base already!

# YQIHXNtdMzywWsPdq 2019/11/15 23:49 https://onlineshoppinginindiatrg.wordpress.com/201

There as definately a great deal to learn about this issue. I love all of the points you made.

# duqQbxgDWPuxfQGcOa 2019/11/16 6:37 http://www.trifit-tu.cz/aid-get-all-data-you-need-

It as hard to come by educated people on this subject, but you sound like you know what you are talking about! Thanks

# VXIFUBRKLldkxV 2019/11/16 15:22 http://www.forum.esocialdigital.com.au/discussion/

This blog is without a doubt awesome and diverting. I have picked a lot of handy stuff out of this blog. I ad love to come back again soon. Cheers!

# TpegtMuJhF 2019/11/18 11:51 https://schooltips.com.ng/privacy-policy/

Thanks , I have just been looking for info about this subject for ages and yours is the greatest I ave discovered till now. But, what about the bottom line? Are you sure about the source?

タイトル  
名前  
Url
コメント