• 【Management】Devcon.exe でコマンドラインからデバイスを無効化

    あぁ、昔こんなコマンド使ってたなぁ..という方、けっこういらっしゃると思います。一部のバッチファイルマニアには有名なコマンドですね。

    Windows7 Beta でも動くのかなぁ…とおもって確認したらちゃんと動作したので、せっかくなのでご紹介しておきます。

    その名も Devcon.exe です。以下からダウンロードできます。自己解凍形式になっているので、どこかに解凍してからお使いください。64ビット版と32ビット版が格納されています。

    デバイス マネージャとして機能する DevCon コマンド ライン ユーティリティ
    http://support.microsoft.com/kb/311272/ja

    さて、このコマンド、はたして何に使うコマンドなのか…

    例えば、スタートアップスクリプト等を使用して、コマンドラインからデバイスを無効にもしくは有効にしたい場合ってありますよね。もしくは、ドライバーをインストールした後で、再起動するのではなくてハードウェアの再スキャンすることでデバイスを認識させたりとか。

    私は以前に、ノートパソコンに標準実装されている「無線LANカード」を強制的に無効化するのに使ったり、USBカードリーダーの再認識を強制的に行わせるために使ったりしていました。

    通常は以下のように「デバイスの管理」画面で[ハードウェア変更のスキャン]を行ったり、デバイスの有効/無効を切り替えます。

    image

    Devcon.exe を使用すると、これをコマンドライン上から行えます。

    例えば、ノートパソコンによく実装されている Bluetoothデバイスを使わせたくないとしましょう。

    事前に、以下のコマンドを使用して、無効化したい Bluetooth デバイスの ハードウェアIDを取得します。そのためには、「デバイスの管理」を使用して、無効化したいデバイスのプロパティを開きます。

    image  image

    [詳細]タブを開いて、プロパティから[ハードウェアID] を参照してください。

    上の画面では「USB\VID_044E&PID_3017&REV_0218」と「USB\VID_044E&PID_3017」という2つのハードウェアIDが存在していることがわかります。

    基本的に「文字列が長いほうのID」を使用すれば良いのですが、念のためにコマンドプロンプトから以下のコマンドを入力して、マッチするデバイスが1つであることを確認してください。

    image

    以下のように disable パラメタを使用するとデバイスは無効化できます。

    image

    ちなみに、Windows Server 2008 がドメインコントローラであり、かつWindows 2003/XP/Vista/2008 がクライアントの場合には、「グループポリシー基本設定」に用意されている「デバイス」で行うことができるので、Devconは必要ありません。

    image

  • 【Management】グループポリシー基本設定 の「適用できなくなった場合はこの項目を削除する」って?

    GWのときこそメンテ時ですね!ということで、私も原稿が終わらなかったりとかいろいろで出社しています。

    業務連絡
    >O編集長 さま
    すみません、いま少しお待ちを…

    さて、グループポリシー基本設定(Group Policy Preferences)の各設定項目の中に「共通」オプションというものが用意されています。

    この中に「適用できなくなった場合はこの項目を削除する」という設定があるのですが、これ、意味わかります?

    image

    正直、ちょっとわかりづらいですよね。ヘルプを読んでもいまいち…うーん…といったかんじです。

    そこで、グループポリシー基本設定の中の「ローカルユーザー」を例にして解説してみます。

    「ローカルユーザー」ポリシーは、ポリシーが適用されたときに、ユーザーを作成、変更、削除するためのものです。このポリシーによって、従来スタートアップスクリプトで行ってきたローカルユーザーの作成やパスワード変更等の設定を、ポリシーで一括管理できるようになります。

    image

    グループポリシー基本設定の特徴は、ログオンスクリプトやスタートアップスクリプト同様、本番環境に直接書き込んでしまうことです。(これを「タトゥー」と呼ぶことがあります。Windows NT 4.0 の頃のシステムポリシーも同様だったですね。)

    そのため、例えば上記のようなユーザーを作成した場合には、削除用のポリシーを作成するか手動で削除しない限り、ユーザーはローカルコンピューターに残り続けます。

    通常はそれでも問題ないと思いますし、必要であれば「アカウントを無効」にでもしておけばよいと思いますが、それだと不都合な場合もあります。

    例えば、

    クライアントがシステム部門に所属しているときだけ処理したい

    といった場合。

    グループポリシー基本設定は「タトゥー」ですから、クライアントがシステム部門OUからはずれても、一度作られたユーザーは削除されません。そこで使用するのが、「適用できなくなった場合はこの項目を削除する」です。

    これをチェックしておけば、クライアントが、ポリシーがリンクされているOUから移動した場合、言い換えれば「ポリシーのスコープ外となった場合」に、自動的にユーザーを削除してくれます。

    この「削除してくれる」処理ですが、正確に書くと「置換処理の際に再作成しない」という処理になります。

    「適用できなくなった場合にはこの項目を削除する」が選択されると、操作モードが強制的に「置換」となり、これ以外を選択することができません。置換処理とは、「現在のオブジェクトを削除して、同じものを再作成する」という処理ですが、「同じものを再作成する」部分を実施しないことで事実上の削除を実現する、という処理になります。

    image image

    さて、スコープ外という状況は、OUを移動したときばかりではありません。

    上の画面ショットをごらんいただきたいのですが、グループポリシー基本設定の「共通」タブには、「項目レベルでターゲットを設定する」という設定項目が用意されています。

    これもちょいとわかりずらいのですが、要は「ポリシー適用先のフィルター」です。このフィルターから外れた状態も「スコープ外」と判断されます。

    このフィルターが実に多彩でして。以下をご覧ください。

    image 

    コンピュータ名やIPアドレスだけでなく、特定のレジストリ値や、時間帯によってもフィルターをかけられるんですね!ログオンスクリプトでこれらを実現するために試行錯誤してきたエンジニアの方々には、垂涎ものの機能です。

    「9時から17時までの間に起動された場合にはユーザーを作成し、それ以外の時間帯なら作らずに削除する」なんてことが可能です。

    グループポリシー基本設定はとてもよい機能です。ログオンスクリプト代わりに是非ともお使いください。

  • 【Management】「グループポリシー基本設定」でのパスワードを設定する場合の注意

    少し前になるのですが、本社のグループポリシーチームのBLOGに以下の投稿がありました。

    Passwords in Group Policy Preferences (updated)
    http://blogs.technet.com/grouppolicy/archive/2009/04/22/passwords-in-group-policy-preferences-updated.aspx

    グループポリシーの基本設定ってご存知ですよね。Windows Server 2008 から実装されたもので、スタートアップスクリプトやログオンスクリプトの複雑化を解消することができるポリシー設定です。

    このBLOGを要約すると、以下のようなことを言っています。

    グループポリシーの基本設定では、その設定項目の中でパスワードを入力する必要があるものがあり、そこで設定したパスワードはポリシーの実体であるXMLファイルに、読み取れない形式で保存されている。
    ただしグループポリシーの性格上、その保存先はSYSVOLであり、全ての認証済みユーザーが読み取り可能となっている。ぶっちゃけて言ってしまえば not secured なので、パスワードを設定する場合にはよく考慮してみて欲しい。特に administrator アカウントの影響は大きすぎるので、できれば専用のアカウントを作成して使用することをお勧めする。

    うーん、なんとも喉の奥から搾り出したような書き方ですが、ひとまず現状の仕様はそうなっているので気をつけてくださいということなのです。

    では、実際にどうなっているのか見てみます。

    以下は、グループポリシー基本設定 に用意されているドライブマップの設定画面です。

    ご覧いただけるとおり、マップに使用するユーザーIDとパスワードを設定することができます。

    image

    このポリシーを保存すると、以下のように SYSVOLフォルダ配下のパスにXMLファイルとして保存されます。

    image

    実際に上記のXMLファイルを見てみると、以下のように記載されており、パスワードは確かにエンコードされています。

    image

    ちなみに、グループポリシーチームのBLOGにも書かれていますがグループポリシー基本設定 の中でユーザーIDとパスワードを設定することができるのは、以下の通りです。

    • ローカルユーザー
    • データソース
    • ドライブマップの作成(上記の通り)
    • タスクスケジューラ
    • サービスのアカウント設定
  • ☆☆☆念願の一位獲得!☆☆☆

    えーと、すみません。どうでもよい話で恐縮です。

    ※大野さんのセミナー中で不謹慎なのですが…

    早くしないと、また入れ替わる可能性があるので…

    Googleで恐縮なのですが、強敵「安納芋」を抜いて「安納」がトップに躍り出ました。

    http://www.google.com/search?hl=ja&q=%E5%AE%89%E7%B4%8D&lr=&aq=f&oq=

    image記念のスナップショット

    すみません、それだけです…。

  • 【TFセミナー】5月30日(土)スクリプトセミナー参加者募集開始です

    こんにちは。ここのところ技術的な投稿が無くてすみません。ひとまず告知させてください。

    以前、5月30日のセミナーを以下の投稿で予告しておりました。

    【勉強会】スクリプトの「超基本」を勉強したい方、アフター5に初台に来ませんか?
    http://blogs.technet.com/junichia/archive/2009/04/16/3227141.aspx
    ※もうしわけありません。今回の勉強会メンバー募集は終了しました。

    ようやく募集が開始されましたのでご案内します。

    5月30日 TFセミナー 「スクリプトを使用した Windows Server 管理の自動化

    4月2日に開催したセミナーとほぼ同様の内容ですが、アンケート結果を受けて内容と構成をリフレッシュする予定です。ただ、リフレッシュといっても、内容が大きく変わるわけではありません。

    こんなことを申し上げるのもアレなのですが、ガッカリしていただくのも申し訳ありませんので書いておきますと、前回のセミナーに参加された方は、おそらくあまり新しい発見はありませんのでご注意ください。

    前回、満席でお申し込みになれなかった皆さま、お早めにお申し込みください!