PowerShellを使って、ADユーザーをローカルグループから削除する

リモートデスクトップで仮想サーバに接続させてアプリを使ってもらおう、第三弾

Remote Desttop Usersに追加すれば、サーバに乗っているアプリを使用することはできます。
ところが、ライセンス管理上ユーザがいつからいつまで利用したかの履歴を取りたいとのこと。
GUIを使うと、ログが残りません。Active Directory UserはあくまでADサーバーで管理しているので、ADドメインにログオンした履歴くらいしか残らないようです。さて、どうするか…

しょうがないので、スクリプトでLocal Groupに追加してスクリプトの中でLogを吐き出すことにしました。
VBやC#を使えばできるんじゃないの、と言われましたけど多分自分しか使わないものをプログラム化しなくてもと思いPowerShellでスクリプト化。

PowerShellを使って、ADユーザーをローカルグループに追加する

まずは、ユーザーを追加するところから。これは検索すればすぐに出てきます。

ADユーザーをローカルグループに追加する  ーMicrosoft Script解説ブログ

…ここまでは出来たけど、削除コマンドが検索しても出てこない…
PSBaseオブジェクトで調べてもADSIオブジェクトを調べても出てこない。
PSBaseオブジェクトのInvokeメソッドを呼び出して、”Add”パラメータを指定して実行、と解説されているんですが、パラメータ一覧が見当たらない。
(Invoke自体は、呼び出し位の意味の英単語)
.netFrameworkのオブジェクトを呼び出しているだけ、というのは分かるんですが.netFrameworkを調べ始めても埒あかないし。

探しているうちに素敵なページがヒットしました。

PowerShellでローカルアカウントの操作

こちらのサイトではLocalGroupオブジェクトにRemoveメソッドを使っていました。「Removeメソッドなんだ」ということで、おなじ文法に違いないと下記に変更

できたヽ(^。^)ノ

ログを追記する。

最初はhistoryオブジェクトに各項目をAddしてExport-CSVを使おうとしたんですが、上手く吐き出されないので断念

エラー制御を入れる。

groupに追加/削除しようとした時、ちゃんとチェックしてエラーを返してくれます。例えば:

  • 既にユーザがグループに居る場合

  • ユーザ名が間違っている場合

エラー自体は読めばわかるので、追加が成功した時にだけログを吐いてほしい。
またエラー自体は、ちゃんと画面に出してほしい。
ということで、エラーハンドリングを追加します。

これをコマンドラインから実行して、ログを吐いていけば管理台帳を手で記載しなくていいはず!

ここまでやったら「ユーザに自分で登録させられない?」って言われました。
管理者権限が要るので、そのままではできません。

Webで申請させてWeb上にリストorデータベース作ってそれを元に管理者権限でバッチ処理を定期的に走らせる、とかですかねぇ…。ちょっと難易度があがるのでまた次の機会に。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください