RODC環境でドメインに参加させるスクリプト

RODC環境でドメインに参加するためのスクリプト 実行書式は以下の通り。/readonly を忘れずに。 c:\> joindomain.vbs /domain <domainname> /mchinepassword <事前に設定したコンピューターのパスワード> /readonly —————————————————————————————–  ‘ JoinScript.vbs’ ‘     Script to join a computer to a domain.’     ” sub Usage   wscript.echo ” |————————————————|”   wscript.echo ” |   Joins a computer to a domain or workgroup    |”   wscript.echo ” |————————————————|”   wscript.echo “”   wscript.echo “Usage: ”   wscript.echo ” cscript JoinScript.vbs [/domain <domainname> |…


【Hyper-V】統合サービスの「データ交換」ってなに? その2

前回の投稿はこちら 【Hyper-V】統合サービスの「データ交換」ってなに? では実際に、データ交換 機能を介して、ゲストOSの情報を取得してみましょう。 まずは以下の図をご覧ください。これは、ゲストOS上のレジストリエントリです。 ご覧いただくとお分かりのように、HKLM\Software\Microsoft\Virtual Machine\Auto 配下のエントリが表示されています。IPアドレスやOSのビルド番号、コンピュータ名などの基本的なOSの情報が格納されていることがわかります。 実は、ここに表示されているエントリは、ゲストOSにインストールされている「Hyper-V Data Exchange Service」によって生成されています。   統合サービスがインストールされたゲストOSのサービス。ちなみに、赤で囲んだサービスが、それぞれの統合サービス機能に対応している。 Hyper-V Data Exchange Service が起動するときに、OSの基本情報を収集し、このレジストリキー配下に書き込んでくれます。言い換えれば、このレジストリエントリをでたらめに書き換えても、Hyper-V Data Exchange Service を再起動すれば正しい値に戻すことが出来ます。 ホストOSを経由し、ゲストOSの「データ交換」を介して収集できる情報の1つが、ここに羅列されているレジストリエントリです。 以下の図はここまでの話をまとめたものです。 実際にAutoキー配下の値を取得するには、以下のようなコマンドを使用します(今回は PowerShellを使用しますが、WMI なので VBS を使用することもできます)。 まずはゲストOSの名前を使用して、以下のコマンドを実行します。これにより、Hyper-V上のゲストOSのインスタンスを取得できます($VM)。ここで使用しているのが、Msvm_ComputerSystem クラスであす。このクラスは通常使用する root\CIMV2 ネームスペースではなく、root\virtualication ネームスペースに定義されていることに注意してください。 PS C:\>$VM = Get-WmiObject -Namespace root\virtualization -Query "Select * From Msvm_ComputerSystem Where ElementName=’ゲストOSの名前’ " -ComputerName ホストコンピュータ名 -Credential administrator ちなみに、上のコマンドでは、別ドメインのサーバーを操作しているため –Credential…


【Hyper-V】統合サービスの「データ交換」ってなに?

Hyper-VのゲストOSに「統合サービス」をインストールすると、ゲストOSで以下の機能が使用できるようになります。 オペレーティングシステムのシャットダウン 時刻の同期 データ交換 ハードビート バックアップ(ボリュームスナップショット) これらの機能は、以下の画面から一部を無効にすることも可能です。 この中で、「データ交換」とはどんな機能なのか?というご質問をいただきました。実は、恥ずかしながら私もきちんと把握していなかったので調べてみました。 当初、ホストとゲストの間でファイルを交換できるのかな?と思いこんでおりましたが、どうやら違うようですね…。 要は、 ホストとゲストの間で情報を交換(実際にはレジストリの値)するしくみ です…といっても、なんだかよくわからないですよね。すみません。 ここで、以下の図をご覧ください。 ※上のPPTのクリップアートが気になる方は、ここをクリック! 管理者が操作するPCと、ゲストOSがネットワーク的に通信が可能であれば、WMIのWin32_OperatingSystem等を通じてゲストOSの情報を収集することが可能です。 しかし、ゲストOSが使用しているネットワークが「プライベート」であったり、IPアドレスの体系が全く異なる場合には、いくら管理者といえどもゲストOSに接続することができません。セキュアな環境を構築したいと考える場合には、ゲストOSが使用するネットワークカードは、物理ネットワークカードから切り離すことになるでしょう。それでも、ゲストOSが大量に存在する場合には、スクリプト等でちょちょいと「ゲストOSリスト」なんてものを作成したいはずです。 そんなときは、ホストOSを介してゲストOSの情報を収集することが可能です。これを実現してくれるのが、ゲストOSにインストールされた「データ交換」機能なのです。 ちなみに、「データ交換」機能は、直訳すれば「Data Exchange」ですが、WEB等で記事を探そうとすると、これではヒットしずらいようです。多くの記事では 「KVP Exchange」という言葉が使われています。KVPとは Key Value Pair のことで、ご想像とおりXML形式のデータを指しています。つまり、ゲストOSの情報を KVPで交換できるということを意味しています。 実際にデータ交換を行うには、おなじみ WMI(Windows Management Instrumentation)に用意された仮想マシン用のクラス(msvm_*)を使用します。つまり、スクリプトの出番であると..。   具体的な使い方は次の投稿で..。 つづき http://blogs.technet.com/b/junichia/archive/2009/06/13/3253986.aspx

1

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

こんにちは。ここのところ技術的な投稿が無くてすみません。ひとまず告知させてください。 以前、5月30日のセミナーを以下の投稿で予告しておりました。 【勉強会】スクリプトの「超基本」を勉強したい方、アフター5に初台に来ませんか? http://blogs.technet.com/junichia/archive/2009/04/16/3227141.aspx ※もうしわけありません。今回の勉強会メンバー募集は終了しました。 ようやく募集が開始されましたのでご案内します。 5月30日 TFセミナー 「スクリプトを使用した Windows Server 管理の自動化」 4月2日に開催したセミナーとほぼ同様の内容ですが、アンケート結果を受けて内容と構成をリフレッシュする予定です。ただ、リフレッシュといっても、内容が大きく変わるわけではありません。 こんなことを申し上げるのもアレなのですが、ガッカリしていただくのも申し訳ありませんので書いておきますと、前回のセミナーに参加された方は、おそらくあまり新しい発見はありませんのでご注意ください。 前回、満席でお申し込みになれなかった皆さま、お早めにお申し込みください!


【Management】UACの WMIへの影響について

4月2日 「スクリプトによるWindows Server 管理の自動化」では、Vista 以降で実装された UAC(User Account Control)によるWMIへの影響について触れておりませんでした。 この点については、MSDNに英語でまとめられているのですが、前回の投稿とも関連しますので、このBLOGでも触れておきたいと思います。 UACに関する基本情報ついては以下を参考にしてください。 ユーザーアカウント制御のご紹介(動画) http://www.microsoft.com/japan/seminar/technet/vista/function/part4/play.aspx セキュリティ対策の要点解説 第 15 回 Windows Vista のセキュリティ機能 ~ User Access Control ~ http://technet.microsoft.com/ja-jp/library/dd362924.aspx UACの環境下では、ローカル管理者に所属しているユーザーアカウントは2つのアクセストークンを持っています。1つが一般ユーザーレベルの権限、もう1つが管理者の権限です。通常はスクリプトを実行する際には一般ユーザー権限で実行されます。これは、スクリプトを実行するコマンドプロンプト(cmd.exe)を「管理者として実行」しないかぎり変わることはありません。また、必ずしも「管理者として実行」する必要もありません。 スクリプトは、その実行にどのような権限が必要かを判断する手段を持っていません。そのため、管理者特権モードに昇格するためのダイアログボックスを表示させることができず、アクセス拒否エラーが発生することがあります。 もしスクリプトに管理者権限が必要であれば、コマンドシェル自身を「管理者として実行」する必要があります。 ところで、1点注意しなければならないことがあります。それは、このUACによる管理者特権とWMIのネームスペースへのアクセス権は別のものだということです。つまり、管理者特権を持っていてもWMIネームスペースへのアクセス権によっては実行できない操作がありますし、逆に言えば管理者特権を持っていなくてもWMIの操作に成功することもある、ということです。 以下に示すWMI関連コマンドは、実行時にユーザーが管理者グループに所属しており、かつUACによる管理者特権モードで動作させる必要があります。 mofcomp wmic WMICコマンドは常に管理者特権が必要というわけではありません。OSのインストールにはじめてWMICコマンドを使用する場合には、初期設定が行われるため管理者特権が必須です。その後は使用される操作によって異なります。 winmgmt wmiadap さて、ここからが重要です。 リモートコンピュータに対するWMIの操作はどうでしょう。 UACは、「リモートコンピュータのローカル管理者グループ」に所属しているドメインアカウントの場合には影響を及ぼしません。つまり、操作対象の全てのコンピュータがドメインに参加しており、ドメインの管理者でアクセスすればUACのフィルタリングにかかることは無いということです。逆に言えば、非ドメインアカウントである場合には、たとえ管理者グループに所属していようとUACのフィルタリング対象となります。 参考までに、UCAによる管理者特権モードで実行しないと正しい値を返さないWin32クラスの一覧を以下に示します。 ■ インスタンス自体を返さないクラス Win32_Bus Win32_Printer Win32_ComponentCategory Win32_LogicalProgramGroupItem Win32_LogicalProgramGroup Win32_NetworkConnection Win32_UserAccount Win32_PrinterDriver Win32_PortResource Win32_DeviceMemoryAddress ■ プロパティの一部を返さないクラス Win32_NetworkAdapterConfiguration Win32_DCOMApplicationSetting…


【Management】WMI Tools – CIM Studioでアクセス拒否エラーが出る場合の対処

CIM Studioってなに?って方はこちらをご覧ください。 要は、WMI のネームスペースやクラス構造を把握したり、インスタンスを確認するのに大変よいツールです。 2002年にリリースされた古いツールなのですが、「WMI 使い」には今でも必須ですので、是非ともダウンロードしてお使いください。 Winows 7 Beta や 2008 R2 Beta でも使えます。 ただ、残念ながら英語版しかないんですよね。それでも有用であることに変わりはありません。 さて、Windows Vista、Windows Server 2008 以降のOSで使用していると、ときどき以下のエラーが表示されることがあります。 「WMI アクセスは拒否されました」   たとえば、インスタンスを CIM Studio を使用して変更したり、インスタンスを削除したり..といった場合などに表示されます。 この現象を回避するには..ご想像とおりですが、「管理者モード」で実行します。 ただし、プログラムを実行するときのように単に右クリックしただけでは「管理者として実行」が表示されません。CIM Studio の実態はHTMLファイルだからです。 そこで、Shiftキーを押しながら右クリックしてみてください。以下のように「管理者として実行」が表示されます。 管理者としてCIM Studioを実行することで、アクセス拒否を回避することができます。

2

【TFセミナー】4/2 スクリプトを使用した Windows Server 管理の自動化

みなさんこんにちは。花粉症、いかがですか?私は、去年はほとんどこなかったのですが、ここ数日、かなりひどい状態です。 こんなときはスクリプトだっ!ってことで、きたる 4月2日、「スクリプトを使用した Windows Server 管理の自動化」というタイトルのセミナーを開催します。 対象となるのは、「Windows Sever の管理経験はあるが、スクリプトに関する知識がほとんど無い方~多少経験がある方」です。 また、Winodws は GUI だけだから使いづらいと間違えた洗脳をされてしまった方々も是非お越しください。 完全な「Windows Serverv 初心者」の方だと、ちょっと厳しいと思います。 全体は大きく2部構成となっております。 1.基本編(安納が担当) 2.応用編(安納、奥主、田辺 が担当) 基本編では、「まずスクリプトを使う」ための基礎知識について解説します。 応用編では、シチュエーション別にスクリプトの具体的な適用方法について解説します。ここから多少高度な内容となるでしょう。 応用編の私の担当セッションでは、WMI を使用した Windows Server の監視について解説します。 スクリプトを実行して情報を取ってくる…といった方法は検索すればいくらでも情報が出てきますが、あまり知られていない「スクリプトをサービス化してしまう方法(俗に言う永続的監視ってやつです)」について解説しようかと考えております。 当日お話する内容の一部を以下に記します。 胸がキュンとなった方、ぜひご参加ください。 ———————— ここで言う「イベント」とはイベントログのことではなく、「システムで発生したイベント」のことです。 そのイベントの種類には、「生成」「変更」「削除」があり、それぞれを Instance Creation Event、Instance Modification Evet、Instance Deletion Event と呼びます。 たとえば、イベントログが新しく生成されることで「Instance Creation Event」が発生します。 ユーザーが新しく作成されれば、同様に「Instance Creation Event」が発生します。 IPアドレスが変更されれば「Instance Modification Event」が発生します。 上記のようなスクリプトを作成し、ダブルクリックして実行すると監視を始めることができます。 が、当然のことながら一度ログオフしてしまえばスクリプトが停止してしまいます。ゆえに、この方法を「一時的な監視」と呼びます。 では「永続的に監視する」にはどうするかといえば、永続的監視用のインスタンスを作成してシステムに登録すればよいのです。 そのときに作るスクリプト構造体を「MOF」と読んでいます。(Microsoft Operations…

1

【Management】より高度な PowerShell スクリプティング をバーチャルラボで習得

バーチャルラボはご存知ですよね。 マイクロソフトのサーバーに用意された仮想環境を使用して、実際に手元のコンピュータで動いているかのように製品を触ることができるサービスです。 マイクロソフト TechNet バーチャルラボ 英語版で恐縮なのですが、PowerShell 関連のラボが2件公開されているのでご紹介します。スクリプトの学習なので、あまり英語云々は気にならないです。 Advanced Windows PowerShell Scripting Managing Windows Vista with Windows PowerShell ■Advanced Windows PowerShell Scripting その名の通り、PowerShellのより高度な機能(のきっかけとなる技術)を習得するためのラボで、以下のような演習からなっています。知っていればどうってこと無い内容かもしれませんが、そこにたどり着くまでにあちこちのサンプルを探しまくるよりは、このラボを90分体験して習得してしまったほうが効率的です。超お勧めです。 Exercise 1 Creating Advanced Scripts with Windows PowerShell この演習では、PowerShellを使うに当たって必須の技術であるにもかかわらず、意外と「あれっ?」と思うような事項を学習します。 ー 変数の使い方 ースクリプトブロックの使い方 ーFunctionの使い方 Exercise 2 Using Windows PowerShell with WMI タイトル通り、WMI(この演習ではネットワークカードへのアクセス方法)を使用して、より幅広い情報にアクセスする手法を学びます。1つの例でアクセスの方法さえ覚えてしまえば、あとはその応用でいくらでも幅を広げられます。そのキーとなるのが Win32_ で始まるクラス名であり、その一覧はここ(MSDN)に書かれています。 Exercise 3 Scripting with .NET Objects .NET Framework を直接呼び出す方法について学習します。この演習では、ダイアログボックスを作って表示しています。 Exercise…


【ライトニングトーク ネタ】パフォーマンスを見る

#表示がおかしかったので修正しました。失礼しました。  12月2日に福岡で開催されたTFセミナーでは、お申し込みされた方が少なく、PASSJの河端さんだけでした。そこで、わたくし安納と、Developper Evangelist の大野もLTに参戦いたしました。 私はと言えば、5分におさまりきらず、最後は無理やりまとめてしまいました。が、実はちょっとだけやり残してしまいました。そこで、この場をお借りして、LTトークを行います。5分で読んでください。 <LT開始> みなさんこんにちは、マイクロソフトの安納です。今回は、「パフォーマンスを見る」方法についてご紹介します。 みなさんは、普段、どのような方法でパフォーマンスを見ているでしょう? もっとも手軽なツールが、タスクマネージャーですね。CPUとメモリの状態を手っ取り早く把握するにはこれで十分です。 次に挙げられるのがリソースモニターです。これはWindows Vistaから実装された機能で、CPUやメモリだけでなく、ディスクやネットワークのパフォーマンスを見るのにも活用できます。タスクマネージャーと違い、グラフを見ながら個々のプロセスを確認することができるところがすぐれています。リソースモニターはパフォーマンスモニタの一部として実装されており、コマンドプロンプトから起動する際には perfmon /res と入力します。 さて、次は、すこしなじみのない方法かもしれません。 WMICコマンドです。WMIはご存じでしょうか?Windows Management Instrumentationの略で、Windows Management サービス という名称で実装されています。VBScript や PowerShell をはじめとして、さまざまなプログラム言語からWMIをコールすることで、OSの状態やハードウェアの情報、レジストリ、ユーザーアカウント、などなどなど、とにかく多くの情報を収集することができるだけでなく、情報の設定も可能です。 WMIを使用してパフォーマンス情報を取得することもできます。スライドに示したのは、システムのプロセス情報を取得した例です。「NODE」は参照したいコンピュータ名、「PROCESS」はプロセスに関する情報を取得することを示しています。PROCESS の部分を他のエイリアスに変更することで、その他の情報を取得することができます。どのようなエイリアスが用意されているかは WMIC /? でヘルプを参照してみてください。「List Brief」は表示形式を指定しており、「概要の表示」を意味しています。 スライドにはWMICコマンドの実行結果例を示しています。タスクマネージャと同様の情報が出力されていることがお分かりいただけるでしょう。 パフォーマンスを参照する場合、全ページのように1回限りの情報ではあまり意味がありません。繰り返し表示して、カウンターの推移を見たいと思うのが人情ってものです。 WMICには、さまざまなスイッチが用意されており、繰り返し表示するには「/Every」を使用します。 また特定の情報に絞って取得したい場合には、「get WorkingSetSize」のように取得したい属性名を指定したり、Where句によって特定のプロセスを指定することができます。 ここに示したコマンド例を実際に実行すると、次のようになります。 この例では、1秒ごとに、Explorer.exe の使用メモリ、CPUの使用時間を取得しています。画面に表示するだけでなく、c:\tmp\perf.txtにも保存されています。 WMICの面白ところは、パフォーマンスカウンタのクラスを直接指定することで、パフォーマンスモニタと同じレベルの細かな情報を取得することができるところです。 今回は詳しくお話する時間がありませんので、「WMI Win32 Classes」で検索してみてください。MSDNライブラリ内の情報がヒットします。   さて、1つ大御所が抜けていますね。そうです、パフォーマンスモニターです。パフォーマンスといえばパフォーマンスモニター。これを知らずしてパフォーマンスを語ることはできません。 なので詳しい使い方等の説明は省きますが、Windows VistaやWindows Server 2008によってカウンタの数も増え、より使い勝手が良くなりました。特定のカウンタのグラフを太字にして目立たせるなんてこともできます。 もう無いだろう…と思ってますか?いえいえ、もう1つご紹介したい機能があります。それは、Internet Explorer に System Monitor Control を読み込んで使用する方法です。…