
現在使用している Kix スクリプトを Powershell スクリプトに置き換えることを検討しており、グループ メンバーシップをテストしてネットワーク ドライブをマップする方法を知りたいと思っています。現在の Kix スクリプトは基本的に、すべてのユーザー グループに対して if ステートメントを実行し、ユーザーがそのグループに属しているかどうかをテストします。属している場合は、ネットワーク ドライブをマップします。次に例を示します。
If InGroup("ADGROUP")
Use m: "\\server\share"
EndIf
これが最も効率的な方法であるとは思いませんが、PowerShell で同じことを実現する方法と、Active Directory のユーザーのドライブとプリンターをマップする適切な方法として推奨されるものをお聞きしたいと思いました。
この情報が必要な場合、当社のクライアントはすべて Windows Vista/7 を使用しており、現在 AD 2008 に移行中です。
答え1
AD 内のドライブをマップするには、グループ ポリシー設定を使用します。グループポリシーの基本設定を使用してグループメンバーシップに基づいてドライブをマップするを参照してください。詳細については、こちらを参照してください。また、ネットワークの場所をライブラリに追加する方法を示すユーザー教育も推奨します。
答え2
既存の Kix ファイル (私が作成したもの) を Powershell に変換するのに丸 3 日かかりました。
私が発見したのは、Powershell はまだログイン スクリプトとして使用するには完全に準備ができていないことです。最新バージョンでは可能かもしれませんが、現時点での Powershell 2.0 では、使用されているコマンドは主に VBS から移植されていることがわかりました。
Kixtart の「If」コマンドは、多数のクライアント サイトで使用して実際に機能したため、非常に効果的だと思います。単純明快で、迅速で、コマンドは Kix をこれまで使用したことのないシステム管理者でも簡単に読み取ることができます。つまり、Kixtart の同じドライブ マッピング コマンドと、Powershell で同じことを行うために記述する必要があるコマンドを比較すると、過度に複雑に思えます。
私はそれについてブログに書きました:http://thisishelpful.com/kix-login-script-remote-desktop-services-server-terminal-server.htmlkix スクリプトと修正した Powershell スクリプトを比較して更新します。そうすれば、私の言っていることが分かると思います。
お役に立てれば幸いです。
答え3
AD 側については、Quest の AD コマンドレットを確認することをお勧めします。
答え4
PowerShell でグループ メンバーシップを確認するには:
$wid=[System.Security.Principal.WindowsIdentity]::GetCurrent()
$prp=new-object System.Security.Principal.WindowsPrincipal($wid)
$adm=[System.Security.Principal.WindowsBuiltInRole]::Administrator
$IsAdmin=$prp.IsInRole($adm)
最後の2行は、組み込みグループに従うパターンです(これらの数)。また、IsInRole
文字列を受け取ります。例: "ドメイン\グループ「」。
ドライブをマップするには、実行するのがnet use ...
おそらく最も簡単です (PowerShell はコンソール実行可能ファイルを簡単に呼び出すことができます)。