<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DEICQno4fSp7ImA9WhRXEU4.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395</id><updated>2011-12-18T00:42:43.435+09:00</updated><category term="ActiveDirectory" /><category term="RDS" /><category term="監査ポリシー" /><category term="グループポリシー" /><category term="PKI" /><category term="Powershell" /><category term="仮想化" /><category term="ソフト" /><category term="VDI" /><category term="セミナー" /><category term="Tips" /><category term="ネットワーク" /><category term="余談" /><category term="サイト紹介" /><category term="記事" /><category term="設定" /><category term="google ソフト" /><title>おえかきWindows</title><subtitle type="html">技術メモ描き
まだまだ勉強中なのでご指導、ご鞭撻よろしくお願いします。</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://win-enikki.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>47</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/tqez" /><feedburner:info uri="blogspot/tqez" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEICQng5eip7ImA9WhRXEU4.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-2073541787638862275</id><published>2011-12-18T00:42:00.000+09:00</published><updated>2011-12-18T00:42:43.622+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-18T00:42:43.622+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Powershell" /><title>れあつい　～Twitterフォローユーザーのレア発言を取得してみる～</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;（＊ この記事は &lt;a href="http://atnd.org/events/22073" target="_blank"&gt;PowerShell Advent Calendar 2011&lt;/a&gt; 18日目の参加記事です。)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-dRkbyLytkh8/Tud4dJEW4LI/AAAAAAAABK8/stqilbtJuco/s1600/62.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-dRkbyLytkh8/Tud4dJEW4LI/AAAAAAAABK8/stqilbtJuco/s1600/62.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: left;"&gt;raretwit.ps1というスクリプトを作りました。&lt;br /&gt;
コードは一番下に置いたので、すぐに使ってみたいひとはそちらをどぞ。&lt;br /&gt;
&lt;br /&gt;
さて、ではまずヘルプを呼び出してみます。スクリプトのはじめのコメント文に書式に沿って書くことでget-helpを使用した場合に表示することができます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-8LexJtRkSB0/TuiwyJcOMVI/AAAAAAAABLE/zRHsc0TtuRU/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-8LexJtRkSB0/TuiwyJcOMVI/AAAAAAAABLE/zRHsc0TtuRU/s320/1.png" width="310" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
とりあえず、ずらずら書いてみました。&lt;br /&gt;
順を追ってみてみましょう。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;１．フォローユーザーを取得する&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
引数に g をつけることで、フォローユーザーを取得できます。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-s7QCaTYEMpU/Tudqc77pxZI/AAAAAAAABKU/z1josUN5rSY/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="100" src="http://2.bp.blogspot.com/-s7QCaTYEMpU/Tudqc77pxZI/AAAAAAAABKU/z1josUN5rSY/s400/2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;アカウント名の入力を促されるので、取得したいユーザーアカウントを入力すると、&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;webAPIからデータを取得し、カレントディレクトリのtuser.txtに書き出します。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;別に自分のアカウントでなくても、他の人のフォローリストでも取得できます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;２．レアユーザーを取得する&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;引数に r をつけることで、レアユーザーを取得することができます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-n_sCtnI12oo/TudrgWPypJI/AAAAAAAABKc/HzjJmKdJlu4/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="77" src="http://1.bp.blogspot.com/-n_sCtnI12oo/TudrgWPypJI/AAAAAAAABKc/HzjJmKdJlu4/s400/3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;昨日分のツイートから指定した回数以下の発言をしたユーザーを抽出し、&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;rareuser.txtに書き出します。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;たとえば、５回以下の発言をしたユーザーを取得する場合を例とします。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-c_vjuADvTsw/Tudss0pl29I/AAAAAAAABKk/rhz0bviHsuQ/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-c_vjuADvTsw/Tudss0pl29I/AAAAAAAABKk/rhz0bviHsuQ/s400/4.png" width="282" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;「全 2 ページ 1 ページ目 9 回実施」と出たあと、「～回目完了」と出力してます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;これは、たとえばフォロー数が100人いたとして、そのままwebAPIに100人分のツイートを検索するよう投げても、検索過多でエラーを返してくるための処置です。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;一度にできる検索上限数は25件前後のようだったので、余裕をもって20人ずつ分割して処理させてます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;100人フォローユーザーがいたとすれば、20人１組として５組にわけ、５回にわけてツイート検索する、、という感じです。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;また、一度に取得できる結果は最大100件までです。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;101件以降のデータを取りたい場合は、pageを指定してあげる必要があります。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;ちょうど書き込みが多いWeb掲示板なんかを想像するとわかりやすいかもしれません。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;今回は、あまり多くのデータを取得しても時間がかかるだけなので、&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;10組以上、つまり２００人以上のフォローユーザーがいる場合はデータ取得を１ページ分(100件)だけ。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;それ以下の組数の場合は２ページ分(200件) 取るようにしました。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;それぞれの組ごとで取得したデータは一度すべて足し合わせます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;その結果をGroup-Objectを使用して名前ごとにグループ分けし、出力します。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-SLMxuCiiZCo/Tud0xekRALI/AAAAAAAABKs/lUGpM6E0giE/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="346" src="http://3.bp.blogspot.com/-SLMxuCiiZCo/Tud0xekRALI/AAAAAAAABKs/lUGpM6E0giE/s400/5.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;さきほど指定した回数以上のユーザーを切り捨てた後、&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;残ったユーザーで再度２０人1組にわけ、再び同じ処理を繰り返します。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;これを指定した回数以上のツイートユーザーがいなくなるまで繰り返します。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-y_vM_A-Wurw/Tud2Bi6lTpI/AAAAAAAABK0/MP5iE93HK5I/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://3.bp.blogspot.com/-y_vM_A-Wurw/Tud2Bi6lTpI/AAAAAAAABK0/MP5iE93HK5I/s400/6.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;最終的に残ったユーザーアカウントはカレントディレクトリのrareUser.txtに書き出されます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;これで、レアユーザーリストができました。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;3.レアユーザーのツイートを表示する&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;引数にsをつけることで、前日分からのレアユーザーのツイートを表示します。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ReIw1hAKBds/Tuiye2dv8YI/AAAAAAAABLM/Awy90m6JaxE/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-ReIw1hAKBds/Tuiye2dv8YI/AAAAAAAABLM/Awy90m6JaxE/s320/7.png" width="310" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;出力の仕方は、ストリームのように流れ、一文字ごとタイプで打つような表示がされます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;タイプのような表示がうざったい、という場合には、引数にnotypeをつけることで、やめることもできます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;正直、個人的にはタイプでの表示は文字を目で追うことが疲れるので、お遊び的な要素ですねｗ&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;次のツイートには3秒待ってから進みますが、引数に tltime [数字] で待ち時間を変えることもできます。ツイートの数が多い時には待ち時間を小さくして一気にみたり、逆にゆっくり見たい場合には秒数を増やしてください。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;４．キーワード検索をする&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;派生した機能として、キーワード検索もつけました。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;昔、Googleでリアルタイム検索がありましたが、あれと似たような感じです。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;引数に word [キーワード]　をつけることで呼び出せます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-eNxbXpYfZ9I/Tui2Nj-WZ3I/AAAAAAAABLU/6XgKHBQY2kU/s1600/8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-eNxbXpYfZ9I/Tui2Nj-WZ3I/AAAAAAAABLU/6XgKHBQY2kU/s320/8.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;キーワード検索の場合、レアユーザーツイートと違い、多くのデータをとってくるので&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;さしあたって実行した時点での最新25件を表示します。あまり多くあっても見きれないですしね。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;25件ながし終えたら、再度検索しなおし、25件目の時刻以降のツイートを再び表示します。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;こちらもデータが多い場合には最新の25件のみの表示となってます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ROyVIlNg5Bk/Tui3mr8GO8I/AAAAAAAABLg/IiM3ig6Hyr8/s1600/9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-ROyVIlNg5Bk/Tui3mr8GO8I/AAAAAAAABLg/IiM3ig6Hyr8/s320/9.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;ちなみに取得準備待ちというのは、&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;twitter　webAPIには1時間あたりの取得制限があり、取得頻度が多い場合、制限にひっかかってしまうため 次の検索を行うまで70秒待つよう設定してます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;ただし、ツイート表示の時間分は引いているので、実際には&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;70-(データ表示数)*1ツイートあたりの待ち時間（デフォルト3秒)待機してから検索を行います。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;せっかくなのでその時間を write-progress に渡して表示させるようにしてみました。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;引数に viewtime をつければ見ることができます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--bQCHTD0bNk/Tui-etgSjsI/AAAAAAAABLo/GhV0Ee4x7u8/s1600/10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="191" src="http://4.bp.blogspot.com/--bQCHTD0bNk/Tui-etgSjsI/AAAAAAAABLo/GhV0Ee4x7u8/s320/10.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;５．キーワードリストから検索する&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;カレントディレクトリにtword.txtを用意して、キーワードを記入。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;引数にwordlをつけることでtword.txtを読み込み、複数キーワード検索が可能です。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;ちなみに、wordとwordl 両方引数つけた場合は、wordl の方が優先されます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;６．フォローユーザーを検索する&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;フォローユーザーを検索する場合には引数に f をつけることで検索可能です。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;レアユーザーがダークマゼンダ、通常ユーザーは青色でアカウントに色付きで表示されます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;こちらもキーワード検索と同じように初回の検索を終えたら再び検索しなおし、表示し続けます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;初回が最新30件の表示、2回目以降は特に数に制限なく表示します。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-RKZ5UY64G3o/Tun0nG-2lJI/AAAAAAAABLw/pVEqqKiH8mg/s1600/11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="252" src="http://1.bp.blogspot.com/-RKZ5UY64G3o/Tun0nG-2lJI/AAAAAAAABLw/pVEqqKiH8mg/s320/11.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;こちらもキーワード検索と同じく、70秒待機して検索しますが、&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;あまりにもフォローユーザーが多い場合(1000人単位くらい)には検索に少し時間がかかってしまうこともあるかもしれません。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;そういった場合には 手動でtuser.txtを編集して、ユーザー数を減らすことで改善されるかと思います。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;７.全部検索する&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;引数なしで実行すると、 wordl、f の引数をつけた状態、つまりキーワード検索とフォロー検索両方実行して表示されます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-EiSxaVNDerk/Tun8riohomI/AAAAAAAABL4/BV1RCujgjmk/s1600/12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="252" src="http://2.bp.blogspot.com/-EiSxaVNDerk/Tun8riohomI/AAAAAAAABL4/BV1RCujgjmk/s320/12.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;レアユーザーがダークマゼンダ、通常ユーザーは青色、キーワード検索は黄色でそれぞれ表示されます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;初回は最新３０件表示します。キーワード検索は最新25件まで取得、フォローユーザーは制限なしで時系列にソートされて表示されていきます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;8.コード&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;ながながと説明してきましたが、結構まだエラーやら抜けがあったりコードも汚いです（；´∀｀）。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;まぁ、こんなやり方もあるよというサンプル的な感じで掲載&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: #ffd966;"&gt;raretwit.ps1&lt;/span&gt;&lt;br /&gt;
&lt;pre class="brush: ps;"&gt;&amp;lt;# 
.SYNOPSIS 
    レアツイ。　twitterで各発言検索スクリプト
.DESCRIPTION 
    -word [キーワード] キーワード検索、ツイート表示
    -wordl tword.txt に書かれたワード検索、ツイート表示
    -f follower、レアユーザーのツイート表示
    -s レアユーザーのツイート表示(1回のみ)
    無地 tword.txtとユーザーリストのツイート表示

    -r レアユーザーを取得、rareUser.txtに書きこむ
    -g followユーザーを取得、tuser.txtに書きこむ
    -tltime [整数] 次のTL表示の秒数指定。指定しなければは３秒
    -notype タイプ形式の表示をやめる
    -viewtime 次のデータ取得の待ち時間を表示する
    
    
.LINK 
    Twitter Search API の使い方 http://www.ibm.com/developerworks/jp/xml/library/x-twitsrchapi/
    Twitter API                 http://watcher.moe-nifty.com/memo/docs/twitterAPI.txt
    おえかきWindows             http://win-enikki.blogspot.com/　
    
.NOTES 
    from%3Aユーザー名で特定ユーザー発言
    to%3Aユーザー名で特定ユーザーにむけての発言
    %23[検索名]でハッシュの検索
    langをつけて国の設定
    API制限は60分間に100回で発生
    最大検索数は25前後。検索数を20個に分割して検索実施

.EXAMPLE 
    
#&amp;gt;
param(`
[switch]$g,[switch]$r,[switch]$s,[switch]$f,`
$word,[switch]$wordl,`
[switch]$notype,$tltime=3,[switch]$viewtime`
)

#検索リストをTwitterAPI形式に変換
function join-search {
    param ($tuser)
    $txtUSerfrom=$tUser | %{ "from%3A"+"$_" }
    $txtUserfrom -join '+OR+'    
}

#検索リストを分割する
function join-search2 {
    param ($userlist)

    $countP=[math]::Truncate($userlist.length /20)
    $countD=$userlist.length % 20

    for ( $i = 1; $i -le $countP; $i++ )
    {
        $s=20*($i-1)
        $e=20*$i-1

        join-search $userlist[$s..$e]
        if ($i -eq $countP){
            join-search $userlist[$s..$($s+$countD)]
        }
    }
}


#TwitterAPI形式の検索語句から検索結果を返す
Function Get-TwitterSearch {
    Param($searchTerm)
    if ($WebClient -eq $null) {
        $WebClient=new-object System.Net.WebClient
    }
    $results=[xml]($webClient.DownloadString(`
    "http://search.twitter.com/search.atom?lang=ja&amp;amp;q=$SearchTerm"))
    $Searchitems=$results.feed.entry
    $SearchItems
}


#引数ユーザーのFollowerチェック
function Check-follower {
 param($tname,$tpage=-1)
 if ($WebClient -eq $null) {
  $WebClient=new-object System.Net.WebClient
 }
 
    while ($tpage -ne 0)
    {
     $results=[xml]($webClient.DownloadString(`
        "http://api.twitter.com/1/statuses/friends/"+ $tname + '.xml?cursor=' + $tpage))
     $results.users_list.users.user | % { $_.screen_name }
        $tpage=$results.users_list.next_cursor
    }    
}

#検索ユーザーテキスト
if ($g){
 $tname=read-host アカウント名入力
 write-host データ取得中...
 $a=Check-follower $tname
 $a
 $a | Out-File .\tuser.txt
 write-host tuser.txtに書き込みました。
 break
}

if ( test-path .\tuser.txt) {
    $txtUser=Get-Content .\tuser.txt | sort -Unique
} else {
    write-host tuser.txtがみつかりません。
    write-host -g オプションでfollowerを読み込んでください
    break
}

$searchUser= join-search2 $txtuser


#Search Twitterから読み込んだデータを編集、表示する
function See-tweet {
    param($obj, $rare, $txtuser)
    $($obj.length-1)..0 | ? { $obj[$_] -ne $null } | % {
        
        $twitname=$obj[$_].author.name
        $twittitle=$obj[$_].title

       #それぞれの取得データに応じて名前部分の色を変化        
        if (Select-String -InputObject $twitname $rare) {
            $colorname="DarkMagenta"
        }elseif (Select-String -InputObject $twitname $txtUser) {
            $colorname="blue" 
        }else {
            $colorname="darkgreen"
        }

        if ($txtTword){
            if (Select-String -InputObject $twittitle $txtTword){
                $colorname="yellow" 
            }
        }        


       #出力内容
        write-host $twitname -ForegroundColor $colorname -NoNewline 
        write-host " ---- " -NoNewline
        write-host $([datetime]($obj[$_].published)) $_
        
        if (-not $notype){
            for ($i=0;$i -le $(($obj[$_].title).length-1); $i++){
            
                write-host $($obj[$_].title)[$i] -nonewline
                Start-Sleep -Milliseconds 20
            }            
            Write-Host ""
        } else {
            write-host $obj[$_].title
        }
        
        Write-Host ""
        Start-Sleep -s $tltime
    }
   
    $colorname=$null
   
}

$yday=[string]$(Get-Date).adddays(-1).tostring("yyyy-MM-dd")
$tday=[string]$(Get-Date).tostring("yyyy-MM-dd")

#レアユーザーを取得する
function Check-RareUser {
    param($searchrareuser, $txtuser)

    
    [int]$twitcount=Read-host 何回発言以下を取得しますか？
    $rare=$txtuser
    do { 
        $twitresult=$null
        $txtmanyUser=$null
        $gruser=$null
        
        if (($searchrareUser.length) -le 10) {
            $t=2
        }else { 
            $t=1
        }

        for ($i=1; $i -le $t; $i++){
           write-host "全" $t "ページ" $i "ページ目"`
            ($searchrareUser.length) "回実施"
           $twitresult += 0..($searchrareUser.length-1) |`
           % { 

                get-twittersearch $($searchrareuser[$_] + `
                "+since%3A$yday+until%3A$tday&amp;amp;rpp=100&amp;amp;page=$i")
                write-host $($_+1)　回目完了
             }
           

        }
        write-host 回数ソート中..
        $twitresult.count
       
        $gruser = $twitresult | %{ $_.author.name } | Group-Object |`
        sort -Property count -Descending
        $gruser
        $txtmanyUser = $gruser | ? { $_.count -gt $twitcount } |`
        % {$_.name -replace " .*",""  }
        Start-Sleep $tltime
        
        if ($txtmanyuser) {
            $rare=Compare-Object $txtmanyUser $rare -SyncWindow $rare.count |`
            % { $_.inputobject }
            $searchrareUser = join-search2 $rare
        }
            
                
    } while ($txtmanyUser)   
     $rare &amp;gt; .\rareUser.txt
}


if ($r){
    Write-Host "前日分のレアチェックユーザー発言"
    Check-RareUser $searchuser $txtUser
    write-host 完了
    break
}    

if ( test-path .\rareuser.txt) {
    $txtrareUser=Get-Content .\rareuser.txt | sort -Unique
} else {
    write-host rareuser.txtがみつかりません。
    write-host -r オプションでレアユーザーを生成してください
    break
}
$searchrareUser=join-search2 $txtrareUser


#レアユーザーのツイート表示
if ($s){
    $twitresult=$null
    for ($i=1; $i -le 2; $i++){
        $twitresult += 0..($searchrareUser.length-1) |`
        % { get-twittersearch $($searchrareuser[$_] + `
        "+since%3A$yday+until%3A$tday&amp;amp;rpp=100&amp;amp;page=$i") }

    }
    $twitresult = $twitresult | sort -Property published -Descending 
    write-host "総発言数:" $twitresult.count
    see-tweet $twitresult $txtrareUser $txtUser
    break
}  


#キーワード検索フラグ
if ( test-path .\tword.txt) {
    $txtTword= Get-Content .\tword.txt | sort -Unique
    if ($txtTword){
        $searchWord=$txtTword -join '+OR+'
    }
}

if ($word) {
    $searchWord=$null
    $searchWord=$word -join '+OR+'
    $w="true"
}

if($wordl) {
    if ($txtTword) {
        $w="True"
    }else{
            write-host tword.txtに検索文字をいれてください。
            break
    }
}    


#残り時間表示
function Count-Time {
    param($time)
    for ($i = 1; $i -le $time; $i++ )
    {
            $status = " {0} 秒" -F $i,$($i*100/$time)
            $currentOperation = "{0} 秒待ちです" -F $time
            Write-Progress -activity "待機中" -status $status -PercentComplete $($i*100/$time)`
            -CurrentOperation $currentOperation  
            Start-Sleep -s 1  
    }
    Write-Progress -Activity "Working..." -Completed -Status "All done."
}    


#ツイートを調べる
function Check-List {
    param($first)
    $twitresult = $null
    if ($w) {
        #wordは25発言まで取得
        $twitresult += get-twittersearch $("$searchWord&amp;amp;rpp=25")
    } 
    if ($f) {
     
        $twitresult += 0..($searchUser.length-1) |`
        % { get-twittersearch $($searchUser[$_] + "&amp;amp;rpp=10") }
     
    }
    if (-not($w -or $f)){

        $twitresult += 0..($searchUser.length-1) |`
        % { get-twittersearch $($searchUser[$_] + "&amp;amp;rpp=10") }
        if ($searchWord) {
            $twitresult += get-twittersearch $("$searchWord&amp;amp;rpp=25")
        }

    }
    
    
    
    if (-not $first){
        $twitresult = $twitresult | ? { $([datetime]($_.published)) -gt $script:getlasttime}
    }
    
    if ($($twitresult -eq $null) -or $($twitresult[0] -eq $null)) {
        Write-Host "##########################################"       
        Write-Output "データはありませんでした"
        $script:getlasttime=$(get-date)
        
        if ($viewtime){
            Count-Time 70
        }else{
            Start-Sleep -s 70
        }
        
        Write-Host "##########################################"
                
   
    }else{
    
        Write-Host "############## コメント数 $($twitresult.length)"
        $twitresult = $twitresult | sort -Property published -Descending 
        #30ツイートまで出力する
        if ($first) {
            $twitresult = $twitresult[0..30]
        }
            
        see-tweet $twitresult $txtrareUser $txtUser
     
        $script:getlasttime=$([datetime]($twitresult[0].published))
    
        Write-Host "##########################################"
        Write-Host "取得準備待ち"
        if (($twitresult.length-1)*$tltime -le 70) {

            if ($viewtime){
                Count-Time $(70-($twitresult.length-1)*$tltime)
            } else {
                Start-Sleep -s (70-($twitresult.length-1)*$tltime)
            }                
                
        }else{

        }
        
    }
    
}

Write-Host "##########################################"
Write-Host "ストリーム開始!"
check-list first
$a = 0
do  
    { 

    check-list        
 
    }
while ($a -ne 1)

&lt;/pre&gt;&lt;br /&gt;
今回は、おもいついたままに作ったスクリプトでしたが、&lt;br /&gt;
PowerShellはデータの編集や 動作処理など色々なことができるので、是非使ってみてください( ´∀｀)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-2073541787638862275?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/lxxH4QgHZnU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/2073541787638862275/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2011/12/twitter.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/2073541787638862275?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/2073541787638862275?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/lxxH4QgHZnU/twitter.html" title="れあつい　～Twitterフォローユーザーのレア発言を取得してみる～" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-dRkbyLytkh8/Tud4dJEW4LI/AAAAAAAABK8/stqilbtJuco/s72-c/62.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2011/12/twitter.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQHSHk4fSp7ImA9WhdWFEQ.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-8564167293557627225</id><published>2011-09-09T00:05:00.000+09:00</published><updated>2011-09-09T00:05:39.735+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-09T00:05:39.735+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tips" /><category scheme="http://www.blogger.com/atom/ns#" term="Powershell" /><title>長月3.プログラムの実行回数を出力させる仕組みをみてみる3</title><content type="html">前回の続きです。&lt;br /&gt;
&lt;br /&gt;
長月1.プログラムの実行回数を出力させる仕組みをみてみる&lt;br /&gt;
&lt;a href="http://win-enikki.blogspot.com/2011/09/1.html"&gt;http://win-enikki.blogspot.com/2011/09/1.html&lt;/a&gt;&lt;br /&gt;
長月2.プログラムの実行回数を出力させる仕組みをみてみる2&lt;br /&gt;
&lt;a href="http://win-enikki.blogspot.com/2011/09/1_05.html"&gt;http://win-enikki.blogspot.com/2011/09/1_05.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
前回、最後にスクリプト付け加えました。&lt;br /&gt;
これは最終実行時間と、できたデータをオブジェクトに入れる処理です。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: ps;"&gt;#レジストリプロパティを入力、時間を出力
function convtime($x) {
    $LittleEndianTime=$x[60..67] | % { $_.tostring("x2") }
    $BigEndianTime=$null
    $($LittleEndianTime.count-1)..0 | % { $BigEndianTime += $LittleEndianTime[$_] }
 
    $filetime=[convert]::ToInt64("$BigEndianTime", 16)
    [datetime]::fromfiletime($filetime)
}
 
#オブジェクトに各データを入れデータ格納
$result = $iname | % {
    $count = $iProp.$_[4]
    if ($count -ne 0){
        $output = New-Object psobject
        $output | Add-Member noteproperty pcount $iProp.$_[4]
        $output | Add-Member noteproperty pname $(func $_)
        $output | Add-Member noteproperty ptime $(convtime $iprop.$_)
        $output      
    }
}
 
#お好みでオブジェクト整形
$result | sort-Object -Property ptime -Descending
&lt;/pre&gt;&lt;br /&gt;
この処理はだいたい以下のような動きをさせている&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-iJJVHohcPX0/TmjL8G5kqFI/AAAAAAAABG0/X3w4UXhpcqE/s1600/60.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-iJJVHohcPX0/TmjL8G5kqFI/AAAAAAAABG0/X3w4UXhpcqE/s1600/60.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;エンディアン&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3"&gt;http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;FileTime構造体&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.runtime.interopservices.comtypes.filetime(v=vs.80).aspx"&gt;http://msdn.microsoft.com/ja-jp/library/system.runtime.interopservices.comtypes.filetime(v=vs.80).aspx&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;続いて、オブジェクト作成。実はPowerShellは、これ覚えておくと超便利&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-2EULEtbLzNk/TmjSEBktWwI/AAAAAAAABG4/KeT-CI0XKDY/s1600/61.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-2EULEtbLzNk/TmjSEBktWwI/AAAAAAAABG4/KeT-CI0XKDY/s1600/61.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;こうやってできたオブジェクト(今回は$result)は、データをまとめたりいじったりがとてもしやすい。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;グリッドで出したり&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-WGC7O5LIrBU/TmjXvFNxOTI/AAAAAAAABG8/t1zoIYJEsQY/s1600/16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://1.bp.blogspot.com/-WGC7O5LIrBU/TmjXvFNxOTI/AAAAAAAABG8/t1zoIYJEsQY/s400/16.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;24時間の間で使ったプログラムのみ出力とかも簡単にできる。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ubbVnSytk48/TmjX-vK-_JI/AAAAAAAABHA/vXn1Lc_1PDM/s1600/15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="224" src="http://1.bp.blogspot.com/-ubbVnSytk48/TmjX-vK-_JI/AAAAAAAABHA/vXn1Lc_1PDM/s640/15.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;ということで、またほかに気になったスクリプトがあったら取り上げたいと思います。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;（自分自身でもつくらなきゃだけど）&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-8564167293557627225?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/LAHO7TMEjTs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/8564167293557627225/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2011/09/33.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/8564167293557627225?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/8564167293557627225?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/LAHO7TMEjTs/33.html" title="長月3.プログラムの実行回数を出力させる仕組みをみてみる3" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-iJJVHohcPX0/TmjL8G5kqFI/AAAAAAAABG0/X3w4UXhpcqE/s72-c/60.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2011/09/33.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYNQ3k-eyp7ImA9WhdWEks.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-5210069574349751461</id><published>2011-09-05T23:28:00.001+09:00</published><updated>2011-09-06T07:36:32.753+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-06T07:36:32.753+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tips" /><category scheme="http://www.blogger.com/atom/ns#" term="Powershell" /><title>長月2.プログラムの実行回数を出力させる仕組みをみてみる2</title><content type="html">前回の続き&lt;br /&gt;
&lt;br /&gt;
長月1.プログラムの実行回数を出力させる仕組みをみてみる&lt;br /&gt;
&lt;a href="http://win-enikki.blogspot.com/2011/09/1.html"&gt;http://win-enikki.blogspot.com/2011/09/1.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
では、残りのスクリプトをみていきます。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: ps;"&gt;$iName | %{
&amp;nbsp; &amp;nbsp; $count = $iProp.$_[4]
&amp;nbsp; &amp;nbsp;
&amp;nbsp; &amp;nbsp; if ($count -ne 0){
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "{0}回 {1}" -f $count, (func $_)
&amp;nbsp; &amp;nbsp; }
}
&lt;/pre&gt;&lt;br /&gt;
プログラム名が記述されている$iName、&lt;br /&gt;
そのプログラムの実行回数を含む各種データが格納されてある$ipropを利用して、回数を表示させる。&lt;br /&gt;
&lt;br /&gt;
では、そもそも$ipropに書かれているデータ構造はどうなっているのだろう？&lt;br /&gt;
$iPropに格納されているのは、以下のレジストリキーをカスタムオブジェクトとして取得し、&lt;br /&gt;
データを各プロパティ値として取得している。&lt;br /&gt;
HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-4wIkF6qHWrI/TmHkRM1z8rI/AAAAAAAABGg/HLcIMOS9hvQ/s1600/13.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="237" src="http://3.bp.blogspot.com/-4wIkF6qHWrI/TmHkRM1z8rI/AAAAAAAABGg/HLcIMOS9hvQ/s640/13.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;レジストリエディターでキーをみたところ&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;オブジェクトは、PSCustomObject&lt;br /&gt;
&lt;pre style="background-color: #eeeeee; padding-bottom: 8px; padding-left: 8px; padding-right: 8px; padding-top: 8px;"&gt;PS C:\Users\buso&amp;gt; $iProp.gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    PSCustomObject                           System.Object

&lt;/pre&gt;&lt;br /&gt;
プロパティ値に各データが保存されてる&lt;br /&gt;
&lt;pre style="background-color: #eeeeee; padding-bottom: 8px; padding-left: 8px; padding-right: 8px; padding-top: 8px;"&gt;PS C:\Users\buso&amp;gt; $iProp | Get-Member -MemberType noteproperty | fl
(略

TypeName &amp;nbsp; : System.Management.Automation.PSCustomObject
Name &amp;nbsp; &amp;nbsp; &amp;nbsp; : {1NP14R77-02R7-4R5Q-O744-2RO1NR5198O7}\zfcnvag.rkr
MemberType : NoteProperty
Definition : System.Byte[] {1NP14R77-02R7-4R5Q-O744-2RO1NR5198O7}\zfcnvag.rkr=
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ystem.Byte[]

TypeName &amp;nbsp; : System.Management.Automation.PSCustomObject
Name &amp;nbsp; &amp;nbsp; &amp;nbsp; : {1NP14R77-02R7-4R5Q-O744-2RO1NR5198O7}\zzp.rkr
MemberType : NoteProperty
Definition : System.Byte[] {1NP14R77-02R7-4R5Q-O744-2RO1NR5198O7}\zzp.rkr=Syst
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;m.Byte[]

(略
&lt;/pre&gt;&lt;br /&gt;
では、各プロパティに格納されているバイナリデータ構造はどうなっているのでしょう。&lt;br /&gt;
どうやら、先頭４バイトの次の４バイトが回数、後ろの４バイトから前の8バイトが時間が記録されるらしい。&lt;br /&gt;
&lt;br /&gt;
B-) の独り言&lt;br /&gt;
&lt;a href="http://d.hatena.ne.jp/hideakii/20090907"&gt;http://d.hatena.ne.jp/hideakii/20090907&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
例として、zfcnvag.rkr (mspaint.exe)をみてみよう。&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ChAOZ-qOiNg/TmIu1Z8bVaI/AAAAAAAABGk/WKqT1WSnvo8/s1600/14.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-ChAOZ-qOiNg/TmIu1Z8bVaI/AAAAAAAABGk/WKqT1WSnvo8/s400/14.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;青がプログラム回数、赤が実行時間&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;データはレジストリエディタ上では16進数で書かれている。&lt;br /&gt;
回数は255回までは5番目のバイト数のみをみればよいので、とりあえずそこだけを見る。&lt;br /&gt;
$iPropでは2進数で出力されるので、特に変換はいらない。&lt;br /&gt;
$iPropのzfcnvag.rkrプロパティの5番目の配列にあるデータを出力してみる。&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-color: #eeeeee; padding-bottom: 8px; padding-left: 8px; padding-right: 8px; padding-top: 8px;"&gt;PS C:\Users\buso&amp;gt; $iprop."{1NP14R77-02R7-4R5Q-O744-2RO1NR5198O7}\zfcnvag.rkr"[4]

3
&lt;/pre&gt;&lt;br /&gt;
あとは、実行回数があるものだけを整形して、出力し完成である。&lt;br /&gt;
さて、ひと通りスクリプトを見たので、せっかくなのでソートして出力するよう、スクリプトを以下のように変更してみた。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: ps;"&gt;$regPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count"
$iProp = Get-ItemProperty $regPath
$iName = (Get-Item $regPath).Property

Function func($x) {
&amp;nbsp; &amp;nbsp; $conv13 = $x.ToCharArray() | %{
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if ( $_ -match "[a-m]") {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [char]([byte][char]$_+13)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }elseif ( $_ -match "[n-z]") {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [char]([byte][char]$_-13)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }else{
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $_
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp;
&amp;nbsp; &amp;nbsp; Split-Path -Leaf &amp;nbsp;([String]$conv13 -replace " ")
}

#レジストリプロパティを入力、時間を出力
function convtime($x) {
&amp;nbsp; &amp;nbsp; $LittleEndianTime=$x[60..67] | % { $_.tostring("x2") }
&amp;nbsp; &amp;nbsp; $BigEndianTime=$null
&amp;nbsp; &amp;nbsp; $($LittleEndianTime.count-1)..0 | % { $BigEndianTime += $LittleEndianTime[$_] }

&amp;nbsp; &amp;nbsp; $filetime=[convert]::ToInt64("$BigEndianTime", 16)
&amp;nbsp; &amp;nbsp; [datetime]::fromfiletime($filetime)
}

#オブジェクトに各データを入れデータ格納
$result = $iname | % {
&amp;nbsp; &amp;nbsp; $count = $iProp.$_[4]
&amp;nbsp; &amp;nbsp; if ($count -ne 0){
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $output = New-Object psobject
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $output | Add-Member noteproperty pcount $iProp.$_[4]
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $output | Add-Member noteproperty pname $(func $_)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $output | Add-Member noteproperty ptime $(convtime $iprop.$_)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $output &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp; &amp;nbsp; }
}

#お好みでオブジェクト整形
$result | sort-Object -Property ptime -Descending
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
追加部分の解説は次回以降にまわすとして、、ひとつ疑問。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-caSdWqPyhMg/TmTbbTSD1EI/AAAAAAAABGw/LYZX2_eVzBo/s1600/59.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="195" src="http://2.bp.blogspot.com/-caSdWqPyhMg/TmTbbTSD1EI/AAAAAAAABGw/LYZX2_eVzBo/s400/59.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
だれか、知っている人います・・？&lt;br /&gt;
この設定場所がわかれば、一週間単位で実行したプログラムと回数を記録し、&lt;br /&gt;
ログとして出力・・、みたいなのができそうなんだけどなぁ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-5210069574349751461?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/VyZDGovTTGc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/5210069574349751461/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2011/09/1_05.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/5210069574349751461?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/5210069574349751461?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/VyZDGovTTGc/1_05.html" title="長月2.プログラムの実行回数を出力させる仕組みをみてみる2" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-4wIkF6qHWrI/TmHkRM1z8rI/AAAAAAAABGg/HLcIMOS9hvQ/s72-c/13.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2011/09/1_05.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkAAQn04fip7ImA9WhdXGEU.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-2180110473924001655</id><published>2011-09-01T23:52:00.000+09:00</published><updated>2011-09-01T23:52:23.336+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-01T23:52:23.336+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="サイト紹介" /><category scheme="http://www.blogger.com/atom/ns#" term="Powershell" /><title>長月1.プログラムの実行回数を出力させる仕組みをみてみる</title><content type="html">とっても面白いPowerShellスクリプトが掲載されていたので ご紹介&lt;br /&gt;
&lt;br /&gt;
のんべんだらりぃ～　プログラム実行回数&lt;br /&gt;
&lt;a href="http://d.hatena.ne.jp/chiaki1220jp/20110831"&gt;http://d.hatena.ne.jp/chiaki1220jp/20110831&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Windowsのレジストリにはプログラムの実行回数が記録されているところがあるので、&lt;br /&gt;
それを利用してどのプログラムを何回実行したかというのを出力するというもの。&lt;br /&gt;
一時、Winny防止の為 本当に起動してないかどうかを確かめるためのソフトが話題になったけど&lt;br /&gt;
そのソフトもどうやらここのレジストリを見ているみたい。&lt;br /&gt;
とはいえ、プロファイルに記載されるレジストリ値であり、&amp;nbsp;ユーザーによっていくらでも書き換えができてしまうので、&lt;br /&gt;
どちらかといえば 使用頻度とかをリサーチする 統計的な目的で利用するのが正しいのかな。&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ay75E2MAbK4/Tl9-xNMVHsI/AAAAAAAABGQ/EHel5K3nuFs/s1600/10.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-ay75E2MAbK4/Tl9-xNMVHsI/AAAAAAAABGQ/EHel5K3nuFs/s1600/10.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;実際に実行してみたところ。回数とプログラムが出力される&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;では、動作をひとつずつ見ていくことにする。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: ps;"&gt;$regPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count"
#▼ $regPathのプロパティ
$iProp = Get-ItemProperty $regPath
#▼ $regPathの名前んとこ全部
$iName = (Get-Item $regPath).Property
&lt;/pre&gt;&lt;br /&gt;
HKEY_CURRENT_USERの UserAssist 配下にプログラム回数が記述されるキーがある。&lt;br /&gt;
&lt;br /&gt;
なお、これはタスクバーのプロパティにある、「最近開いたプログラムを[スタート]メニューに保存し表示する」にチェックをつけていないと記録されない。&lt;br /&gt;
OSのバージョンによって少しUserAssistの仕様が違うみたいで、今回のはWindows7ベースでのスクリプトとなっている。&lt;br /&gt;
ちなみに、{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA} 配下にexeの実行回数&lt;br /&gt;
{F4E57C4B-2036-45F0-A9AB-443BCFE33D9F} 配下にショートカット(lnk)の実行回数が記録される模様&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;つづいて、$iPropには前述のキーのプロパティ、つまりバイナリの値を含むレジストリ値と各データを格納している。&lt;/div&gt;&lt;div&gt;$inameの方はレジストリキー名を格納している。&lt;/div&gt;&lt;div&gt;次に下記のような関数が続く。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;pre class="brush: ps;"&gt;#▼ ROT13変換
Function func($x) {
    $conv13 = $x.ToCharArray() | %{
        if ( $_ -match "[a-m]") {
            [char]([byte][char]$_+13)
        }elseif ( $_ -match "[n-z]") {
            [char]([byte][char]$_-13)
        }else{
            $_
        }
    }
    
    Split-Path -Leaf  ([String]$conv13 -replace " ")
}
&lt;/pre&gt;&lt;br /&gt;
実は$inameの値（つまり、UserAssist下の該当キー)をみてもパッと見、なんだかよくわからない。&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-EgEXeHu5o1s/Tl-O4nT_h7I/AAAAAAAABGU/q8tOSD7xP5I/s1600/11.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="226" src="http://1.bp.blogspot.com/-EgEXeHu5o1s/Tl-O4nT_h7I/AAAAAAAABGU/q8tOSD7xP5I/s640/11.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;$iNameの一部を出力させてみた&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;これは、いわゆるROT13というシーザー暗号を使っているからである。&lt;br /&gt;
元々のアルファベットを13文字ずらして表記する方法で、アルファベットは全26文字のため、同じ変換式で簡単にエンコード・デーコードが可能というのが特徴。&lt;br /&gt;
&lt;br /&gt;
Wikipedia ROT13&lt;br /&gt;
&lt;a href="http://ja.wikipedia.org/wiki/ROT13"&gt;http://ja.wikipedia.org/wiki/ROT13&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-0CEGQ-tQrrE/Tl-ViSC3K_I/AAAAAAAABGY/q9dAz0ejlnY/s1600/58.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-0CEGQ-tQrrE/Tl-ViSC3K_I/AAAAAAAABGY/q9dAz0ejlnY/s1600/58.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;ということで、ROT13変換し、"\"から右側部分のみを出力するという func 関数を作成している。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;以下、実際に使用すると以下のようなプログラム名が表示される&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-rzyF9MC8gik/Tl-XJkgLDgI/AAAAAAAABGc/XlWn_2fXjcU/s1600/12.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="192" src="http://4.bp.blogspot.com/-rzyF9MC8gik/Tl-XJkgLDgI/AAAAAAAABGc/XlWn_2fXjcU/s640/12.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;func関数で変換したもの&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;次回、残りをみていきたいと思います。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-2180110473924001655?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/J-5HBG6YBn0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/2180110473924001655/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2011/09/1.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/2180110473924001655?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/2180110473924001655?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/J-5HBG6YBn0/1.html" title="長月1.プログラムの実行回数を出力させる仕組みをみてみる" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-ay75E2MAbK4/Tl9-xNMVHsI/AAAAAAAABGQ/EHel5K3nuFs/s72-c/10.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2011/09/1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIBQXo8fCp7ImA9WhdXF0w.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-6341292931954719079</id><published>2011-08-30T23:12:00.000+09:00</published><updated>2011-08-30T23:12:30.474+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-30T23:12:30.474+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tips" /><category scheme="http://www.blogger.com/atom/ns#" term="ソフト" /><category scheme="http://www.blogger.com/atom/ns#" term="Powershell" /><title>葉月1.PowerShellのプロファイルとSyncToyを利用したバックアップ</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-lAtIktq84Qw/TlzbEkzXEvI/AAAAAAAABGA/xRlunytilQs/s1600/57.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-lAtIktq84Qw/TlzbEkzXEvI/AAAAAAAABGA/xRlunytilQs/s1600/57.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;僕が使っているのは、MSが出しているSyncToyというツール。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;これを利用するとフォルダ間でファイル同期を行ってくれる。手軽に使えるのでなかなか良い&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;SyncToy&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?DisplayLang=en&amp;amp;id=15155"&gt;http://www.microsoft.com/download/en/details.aspx?DisplayLang=en&amp;amp;id=15155&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;@IT&amp;nbsp;SyncToyツールで手軽にバックアップを行う&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://www.atmarkit.co.jp/fwin2k/win2ktips/611synctoy/synctoy.html"&gt;http://www.atmarkit.co.jp/fwin2k/win2ktips/611synctoy/synctoy.html&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;コマンドプロンプトでも実行できるので、USBメモリをさした場合にプロファイルを読み込み、&lt;br /&gt;
その過程で上記ソフトを実行するよう設定する。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. SyncToyをインストール&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; USBメモリ上にSyncToyをインストールする。ここでは、以下のフォルダに展開した。&lt;br /&gt;
E:\program\buso-sync\x64\&lt;br /&gt;
&lt;br /&gt;
e:をUSBメモリをさした場合のドライブ。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2.利用するPCでPowerShellのプロファイルをいじる&lt;/b&gt;&lt;br /&gt;
プロファイルにもいくつか種類があります。&lt;br /&gt;
&lt;br /&gt;
TechNetマガジン プロファイルの力&lt;br /&gt;
&lt;a href="http://64.4.10.145/ja-jp/magazine/cc895642"&gt;http://64.4.10.145/ja-jp/magazine/cc895642&lt;/a&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: 'Segoe UI', Verdana, Arial; font-size: 14px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: 21px; margin-bottom: 12px; margin-left: 24px; margin-right: 0px; margin-top: 12px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; list-style-image: url(http://i3.technet.microsoft.com/Areas/Sto/Content/Theming/images/bullet.gif); margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 3px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="ArticleInlineTitle" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #323e58; font-family: 'Segoe UI', Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-transform: none;"&gt;%windir%\system32\WindowsPowerShell\v1.0\profile.ps1&lt;/span&gt;&amp;nbsp;コンピュータのすべてのユーザーとすべてのシェルに適用されるプロファイル。&lt;/li&gt;
&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; list-style-image: url(http://i3.technet.microsoft.com/Areas/Sto/Content/Theming/images/bullet.gif); margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 3px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="ArticleInlineTitle" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #323e58; font-family: 'Segoe UI', Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-transform: none;"&gt;%windir%\system32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1&lt;/span&gt;&amp;nbsp;コンピュータのすべてのユーザーと Microsoft.PowerShell シェルに適用されるプロファイル。&lt;/li&gt;
&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; list-style-image: url(http://i3.technet.microsoft.com/Areas/Sto/Content/Theming/images/bullet.gif); margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 3px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="ArticleInlineTitle" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #323e58; font-family: 'Segoe UI', Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-transform: none;"&gt;%UserProfile%\Documents\WindowsPowerShell\profile.ps1&lt;/span&gt;&amp;nbsp;現在のユーザーとすべてのシェルに適用されるプロファイル。&lt;/li&gt;
&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; list-style-image: url(http://i3.technet.microsoft.com/Areas/Sto/Content/Theming/images/bullet.gif); margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 3px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="ArticleInlineTitle" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #323e58; font-family: 'Segoe UI', Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-transform: none;"&gt;%UserProfile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1&lt;/span&gt;&amp;nbsp;現在のユーザーと Microsoft.PowerShell シェルに適用されるプロファイル。&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 21px;"&gt;僕は、普通のprofile.ps1を編集してる。&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 21px;"&gt;USBメモリをさした場合に、該当のスクリプトがあった場合に処理を実行するよう、以下を記述&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="line-height: 21px;"&gt;&lt;b&gt;&lt;i&gt;profile.ps1&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre class="brush: ps;"&gt;if ( $(test-path "e:\config\config.ps1"))
{
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; . e:\config\config.ps1
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; write-host "++++ config アクセス完了 ++++"
}
&lt;/pre&gt;&lt;br /&gt;
もっぱらconfig.ps1にUSBメモリをさした場合に実行するプロファイルとして記述している。&lt;br /&gt;
今回は、ここにSyncToyの呼び出しをするよう追記する。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3.SyncToyを利用するための準備をする&lt;/b&gt;&lt;br /&gt;
フォルダ同期の受け皿を作っておく。ここでは下記のパスとする。&lt;br /&gt;
C:\Users\buso\Desktop\buso-sync&lt;br /&gt;
次に、あらかじめ同期するフォルダペアを登録しておく。&lt;br /&gt;
詳しくは上記の@ITの記事を参考にしてもらいたい。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-o-VGdJWXAGc/TlzpLMHBv8I/AAAAAAAABGI/5NwfAxoTAHw/s1600/8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="499" src="http://3.bp.blogspot.com/-o-VGdJWXAGc/TlzpLMHBv8I/AAAAAAAABGI/5NwfAxoTAHw/s640/8.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
ここではフォルダペア名を"powershell"として、&lt;br /&gt;
C:\Users\buso\Desktop\buso-sync と、USBメモリ先である E: を同期するよう設定した。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4.config.ps1からSyncToyを呼び出す&lt;/b&gt;&lt;br /&gt;
config.ps1にSyncToyを呼び出すよう追加する。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;e:\config\config.ps1&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush: ps;"&gt;if ($env:computername -eq "buso-pc") {
&amp;nbsp; &amp;nbsp; E:\program\buso-sync\x64\SyncToyCmd.exe -R powershell
}
&lt;/pre&gt;&lt;br /&gt;
上記は"buso-pc" に接続した場合の設定。&lt;br /&gt;
SyncToyCmd.exe でフォルダペア名を指定すると、登録した設定に応じて同期される。&lt;br /&gt;
接続するコンピュータに応じてフォルダペア名を変えて、同期方法を変更したりするなど応用も可能。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-C5U2qkIEvGY/TlzvHXp3eJI/AAAAAAAABGM/EtfeXimbDRk/s1600/9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="396" src="http://1.bp.blogspot.com/-C5U2qkIEvGY/TlzvHXp3eJI/AAAAAAAABGM/EtfeXimbDRk/s640/9.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
実際にUSBメモリをさした場合にPowerShellを起動したときに走る処理。&lt;br /&gt;
この他、僕はaliasを読み込んだりさらにスクリプトを呼びだしたりと&lt;br /&gt;
&amp;nbsp;config.ps1 に色々設定を書いてます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-6341292931954719079?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/Yafg6VpP2hk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/6341292931954719079/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2011/08/1powershellsynctoy.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/6341292931954719079?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/6341292931954719079?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/Yafg6VpP2hk/1powershellsynctoy.html" title="葉月1.PowerShellのプロファイルとSyncToyを利用したバックアップ" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-lAtIktq84Qw/TlzbEkzXEvI/AAAAAAAABGA/xRlunytilQs/s72-c/57.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2011/08/1powershellsynctoy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IMQXs_fyp7ImA9WhZaEks.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-3882830454438633194</id><published>2011-06-28T22:59:00.001+09:00</published><updated>2011-06-28T22:59:40.547+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-28T22:59:40.547+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="RDS" /><category scheme="http://www.blogger.com/atom/ns#" term="仮想化" /><category scheme="http://www.blogger.com/atom/ns#" term="VDI" /><title>水無月3.VDI環境をつくってみた</title><content type="html">VDIのテスト環境を作ってみました。&lt;br /&gt;
・・・とはいえ、作ってみた感想としては利用する場面は特殊な状況の時だけかなぁと感じました。&lt;br /&gt;
&lt;br /&gt;
作成は以下の@ITの記事を参考に。&lt;br /&gt;
&lt;br /&gt;
Windows Server 2008 R2によるVDI実践入門&lt;br /&gt;
&lt;a href="http://www.atmarkit.co.jp/fwin2k/operation/vdi01/vdi01_01.html"&gt;http://www.atmarkit.co.jp/fwin2k/operation/vdi01/vdi01_01.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
さて、VDI（Virtual Desktop Infrastructure）というのはそもそも何かというと、&lt;br /&gt;
hyper-v上に仮想クライアントOSをいくつか展開し、それらのOSへ利用者がhyper-v上にあることを特に意識せずリモートデスクトップ接続でつなぎに行く一連のシステムのことを指します。&lt;br /&gt;
&lt;br /&gt;
結構 関連するサーバシステムとしては大掛かりなのですが、役割のうちいくつかは同一サーバでうけもつことができます。図にするとこんな感じ。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-tEQeJ1qfzrA/TgnSxobppHI/AAAAAAAABEE/6VnBaPA4EuI/s1600/58.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-tEQeJ1qfzrA/TgnSxobppHI/AAAAAAAABEE/6VnBaPA4EuI/s1600/58.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;ここでポイントなのが、クライアントOSをリモート接続先として提供しているということ。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;クライアントOSはリモート接続が1セッションしか許可されていないので、サーバファームという形で複数の利用者が使用できる環境を提供しているわけですね。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;しかし、同時接続する数だけ クライアントOSをHyper-V上に用意しておかなければならないですし、そのひとつひとつにOSライセンス料が発生しますし、CALも必要です。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;また、つなぎに行く利用者もPCを使って接続するわけですが、linuxではRDPは最新の7.1はまだ対応していないため、やはりWindowsOSを用意する必要があり、その為のライセンスや管理も必要となります。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Hyper-Vによるサーバファームにしてもディスク容量は差分ディスクで節約するとしても、メモリの割りあてに関しては少し苦慮しそうです。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;というのも、ダイナミックメモリがクライアントOSではWindows7Enterpriseか、Windows Vista EnterpriseまたはUltimateしか対応していないので、それ以外のOSの場合には従来通り静的に割り当てるしかないからです。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;結局のところ、VDIの導入はコスト削減や運用管理の低減、リソースの効率的利用を目的にする、というよりかは利用者へ新たなサービス提供を目的として導入する、と考えていたほうがよいのかなと思いました。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;たとえば、利用者が自分のPCを持ってきた時に、RDWebアクセス提供サーバをDMZに置いておいて、イントラネットにあるサーバファームにつなげてどんな場所でも同一環境を提供する、、とかでしょうか。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;まぁ、RDSサーバ環境でこと足りるのであれば わざわざVDI導入はしなくてもよいかもしれませんね。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-3882830454438633194?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/xvhxTYbAx7k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/3882830454438633194/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2011/06/vdi-it-windows-server-2008-r2vdi.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/3882830454438633194?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/3882830454438633194?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/xvhxTYbAx7k/vdi-it-windows-server-2008-r2vdi.html" title="水無月3.VDI環境をつくってみた" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-tEQeJ1qfzrA/TgnSxobppHI/AAAAAAAABEE/6VnBaPA4EuI/s72-c/58.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2011/06/vdi-it-windows-server-2008-r2vdi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UDRX8zfyp7ImA9WhZaEUU.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-5625439345405328822</id><published>2011-06-27T23:34:00.000+09:00</published><updated>2011-06-27T23:34:34.187+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-27T23:34:34.187+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="RDS" /><category scheme="http://www.blogger.com/atom/ns#" term="仮想化" /><category scheme="http://www.blogger.com/atom/ns#" term="Tips" /><title>水無月2.リモートデスクトップ接続のセッション確認２</title><content type="html">&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;前回、query sessionコマンドを利用した別サーバのセッション確認の記事を書きましたが、&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;山市さんのえぬなんとかわーるどで、PowerShellによるセッション確認についての記事がありました&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
リモート デスクトップ セッションの RDP バージョンを調べる方法 by PowerShell&lt;br /&gt;
&lt;a href="http://yamanxworld.blogspot.com/2011/06/rdp-by-powershell.html"&gt;http://yamanxworld.blogspot.com/2011/06/rdp-by-powershell.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
以下にあるモジュールをダウンロードし、モジュールを読み込むことで、&lt;br /&gt;
リモートデスクトップセッション確認、さらには接続ユーザーへメッセージを送ったりプロセスを停止させるコマンドレットを使うことができるようになります。&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;"&gt;&lt;i&gt;Terminal Services PowerShell Module&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;"&gt;&lt;i&gt;&lt;a href="http://psterminalservices.codeplex.com/" muse_scanned="true" style="color: #336699; text-decoration: none;" target="_blank"&gt;http://psterminalservices.codeplex.com/&lt;/a&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: inherit; line-height: 20px;"&gt;query sessionではせいぜいユーザー名や状態の出力くらいですが、&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 20px;"&gt;上記のモジュールを読みこむことで使用可能となる、&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #30332d; white-space: pre;"&gt;Get-TSSessionはLoginした時間や接続したクライアントなど多岐にわたる情報が出力されます。&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #30332d; font-family: inherit; white-space: pre;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #30332d; font-family: inherit; white-space: pre;"&gt;さらに、PowerShellであるため色々な応用が可能となります。&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #30332d; font-family: inherit; white-space: pre;"&gt;一定時間接続したユーザーに対してメッセージやログオフ処理を走らせたり、特定の端末が接続した場合のみ特殊な処理を実行させる、、ということもできそうです。&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #30332d;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; white-space: pre;"&gt;セッションの情報はRemoteAppで接続した場合でもきちんと出力されましたし、色々趣向をこらせそうですね。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #30332d;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;では実際にやってみます。まず、モジュールを読み込み。&lt;br /&gt;
僕の環境では１度読み込んだらエラーが出るのですが、構わず２回読み込むと、うまくモジュール読んでくれました。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-QG6x-Xgmet4/Tgh0D5RyblI/AAAAAAAABDQ/_jaAktDqRic/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="459" src="http://1.bp.blogspot.com/-QG6x-Xgmet4/Tgh0D5RyblI/AAAAAAAABDQ/_jaAktDqRic/s640/1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
モジュールから追加されたコマンドレットをみてみます。&lt;br /&gt;
ついでにセッション確認のコマンドレットのヘルプもみてみます。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-PQoXHQGOQo8/Tgh06ONX-DI/AAAAAAAABDU/4tujazgM9zM/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="580" src="http://4.bp.blogspot.com/-PQoXHQGOQo8/Tgh06ONX-DI/AAAAAAAABDU/4tujazgM9zM/s640/2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Get-TSSessionは、コンピュータの指定はもとより、状態やユーザーIDのフィルタなどもしてくれるみたい。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-TxiXriO2dMs/TgiKlhXOB5I/AAAAAAAABDY/PaVQRqlmVkU/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="464" src="http://4.bp.blogspot.com/-TxiXriO2dMs/TgiKlhXOB5I/AAAAAAAABDY/PaVQRqlmVkU/s640/3.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
busoserverのセッション状態をみたところ。buso-pcからアクセスしているのがみてとれます。&lt;br /&gt;
Activeだけのものを出力できるので、それをリストとして出力させてみます。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-8ghDkSPLHuo/TgiLRRnE06I/AAAAAAAABDc/mLBQNwGJbHE/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="498" src="http://1.bp.blogspot.com/-8ghDkSPLHuo/TgiLRRnE06I/AAAAAAAABDc/mLBQNwGJbHE/s640/4.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;ユーザーアカウントや、ログインした時刻、最後にinputした時刻なんかも出力されます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;query sessionとは比べ物にならない情報量ですねｗ&lt;/div&gt;&lt;br /&gt;
たとえば、ログインして１時間以上たってもまだアクティブなユーザーとクライアントを出したい場合には、以下のようにうてば出力できます。&lt;br /&gt;
&lt;br /&gt;
Get-TSSession -ComputerName busoserver -State Active&lt;br /&gt;
| ?{ $($_.logintime).addhours(1) -le $(get-date) } | Select-Object clientname, l&lt;br /&gt;
ogintime, UserAccount&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-mgU1C31xoEY/TgiRFIp6gmI/AAAAAAAABDg/HY1EYBzbGYg/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="226" src="http://2.bp.blogspot.com/-mgU1C31xoEY/TgiRFIp6gmI/AAAAAAAABDg/HY1EYBzbGYg/s640/5.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
では、Send-TSMessageを組み合わせてみましょう。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-BQ753tQ6BuM/TgiS24QpW3I/AAAAAAAABDk/_-TCwd03vMQ/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="126" src="http://1.bp.blogspot.com/-BQ753tQ6BuM/TgiS24QpW3I/AAAAAAAABDk/_-TCwd03vMQ/s640/6.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
busoserverでの出力。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-l7BsHeg9fJA/TgiTMtscBzI/AAAAAAAABDo/ES-N5WgkEFA/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="384" src="http://2.bp.blogspot.com/-l7BsHeg9fJA/TgiTMtscBzI/AAAAAAAABDo/ES-N5WgkEFA/s640/7.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
ログインしすぎと言われたので、今回はこのへんで。&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-5625439345405328822?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/E6MjPJLsjDI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/5625439345405328822/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2011/06/2.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/5625439345405328822?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/5625439345405328822?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/E6MjPJLsjDI/2.html" title="水無月2.リモートデスクトップ接続のセッション確認２" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-QG6x-Xgmet4/Tgh0D5RyblI/AAAAAAAABDQ/_jaAktDqRic/s72-c/1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2011/06/2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ADSH8_eCp7ImA9WhZbFE0.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-5097884278586832838</id><published>2011-06-18T21:55:00.001+09:00</published><updated>2011-06-18T21:56:19.140+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-18T21:56:19.140+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="RDS" /><category scheme="http://www.blogger.com/atom/ns#" term="余談" /><category scheme="http://www.blogger.com/atom/ns#" term="Tips" /><title>水無月1.リモートデスクトップ接続のセッション確認</title><content type="html">今、VDIの記事でも描こうかなぁと、検証中。&lt;br /&gt;
でも、その前にTipsなぞ。&lt;br /&gt;
&lt;br /&gt;
まずはリモートデスクトップサービス（RDS）のおさらい&lt;br /&gt;
リモートデスクトップ機能概要&lt;br /&gt;
&lt;a href="http://www.microsoft.com/japan/windowsserver2008/r2/technologies/rds.mspx"&gt;http://www.microsoft.com/japan/windowsserver2008/r2/technologies/rds.mspx&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
RDSは最近は、マルチメディアやプリンタのリダイレクトやAeroグラスのサポートなどもしています。&lt;br /&gt;
RDSの中でもいちばんスタンダードなリモートデスクトップ接続についてですが&lt;br /&gt;
遠隔からサーバを管理したり、PCに接続し動作させることなどができます。&lt;br /&gt;
&lt;br /&gt;
@IT &amp;nbsp;リモート・デスクトップでコンソール・セッションに接続する&lt;br /&gt;
&lt;a href="http://www.atmarkit.co.jp/fwin2k/win2ktips/519rdcons/rdcons.html"&gt;http://www.atmarkit.co.jp/fwin2k/win2ktips/519rdcons/rdcons.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
上記の記事にはこうあります。&lt;br /&gt;
&lt;blockquote&gt;&lt;div style="line-height: 20px;"&gt;リモート・デスクトップで接続すると、それぞれの「セッション」ごとに固有のユーザー環境が用意される。セッションとは、ユーザーごとに用意される画面やキーボード、プロセス空間などの環境へ接続した状態のことを指す。リモートからログオンしたユーザーに対しても仮想的なコンピュータ環境が用意され、実際の物理コンソールの状態には関係なく、独立してコンピュータを利用できる。実際の物理的なコンソールから利用しているセッションのことを特に「コンソール・セッション」といい、リモートから接続しているセッションのことを「リモート・セッション」という。&lt;/div&gt;&lt;div style="line-height: 20px;"&gt;セッションは、Windows XP Professionalでは同時に1セッションのみが利用でき、Windows Server 2003／Windows Server 2008の「管理用リモート デスクトップ」モードでは、同時に最大3セッション（1コンソール・セッション＋2リモート・セッション）まで利用できる。&lt;/div&gt;&lt;/blockquote&gt;本来、サーバに接続する場合にはライセンス（RDSCAL）が必要なのですが、３セッションまでは管理用として接続が許可されているわけです。&lt;br /&gt;
WindowsServer2008以降ではデフォルト設定では、ア&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;カウント1つに付き同時に1つのセッションだけの利用しかできないため、複数の管理者が同一アカウントで接続しようとした場合、作業中にいきなり画面が落ちてしまう（セッションがとられてしまう）場合があったりします。&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-uuk8A9PJRbs/Tfyd5rt5jhI/AAAAAAAABDI/0-E9cTFqIzY/s1600/57.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-uuk8A9PJRbs/Tfyd5rt5jhI/AAAAAAAABDI/0-E9cTFqIzY/s1600/57.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;さて、そんなことにならないよう、現在のセッションの状態を調べたい場合に "query session"コマンドがあります。&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-AyvCt7Zl0Sc/Tfye-WFzdQI/AAAAAAAABDM/S2bWsJzvhiw/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="236" src="http://4.bp.blogspot.com/-AyvCt7Zl0Sc/Tfye-WFzdQI/AAAAAAAABDM/S2bWsJzvhiw/s640/1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;上記の例だと、administratorがrdp-tcp#１セッションで接続していることがわかります。&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;別端末から接続確認する場合には　/server オプションをつけると確認できます。&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-FfiCj4NGiS8/TfySYb_PWjI/AAAAAAAABDA/Q_LPyqKNO3o/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="198" src="http://3.bp.blogspot.com/-FfiCj4NGiS8/TfySYb_PWjI/AAAAAAAABDA/Q_LPyqKNO3o/s640/2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;ただし、信頼関係をむすんでない別ドメインから接続したり、アクセス権限がないユーザーで実行すると、アクセス拒否されてしまいます。&lt;br /&gt;
そこで、psexec.exeを利用してみます。&lt;br /&gt;
&lt;br /&gt;
psexec.exe&lt;br /&gt;
&lt;a href="http://technet.microsoft.com/ja-jp/sysinternals/bb897553"&gt;http://technet.microsoft.com/ja-jp/sysinternals/bb897553&lt;/a&gt;&lt;br /&gt;
psexec.exeは外部端末に指定した権限で接続し、コマンドを実行することができるツールです。&lt;br /&gt;
(これがなかなか便利)&lt;br /&gt;
&lt;br /&gt;
というわけで、以下のバッチを作ったりしました。&lt;br /&gt;
&lt;pre class="prettyprint"&gt;&lt;span class="Apple-style-span"&gt;@echo off
echo 確認したいサーバ名を入れてください。

set /p srv=サーバ名:
echo %srv%
psexec \\%srv% -u furyu\administrator query session

echo このまま接続しますか？
pause
start mstsc /v:%srv%

&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
実行するとこのように出力されます。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-h9YVgPQ6Pz4/TfyZ8bPlfhI/AAAAAAAABDE/WFfwTJB-VIA/s1600/20110618212635.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="332" src="http://3.bp.blogspot.com/-h9YVgPQ6Pz4/TfyZ8bPlfhI/AAAAAAAABDE/WFfwTJB-VIA/s640/20110618212635.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
これで、リモートデスクトップ接続する前にセッションを確認し、&lt;br /&gt;
よければそのままそのサーバへ接続する、という動きになります。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-5097884278586832838?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/XasqzW-6jy4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/5097884278586832838/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2011/06/blog-post.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/5097884278586832838?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/5097884278586832838?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/XasqzW-6jy4/blog-post.html" title="水無月1.リモートデスクトップ接続のセッション確認" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-uuk8A9PJRbs/Tfyd5rt5jhI/AAAAAAAABDI/0-E9cTFqIzY/s72-c/57.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2011/06/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ENQn0-fip7ImA9WhZVFUQ.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-1805877044542090114</id><published>2011-05-29T01:20:00.001+09:00</published><updated>2011-05-29T01:21:33.356+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-29T01:21:33.356+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="仮想化" /><title>皐月3.仮想化タイプと住居２</title><content type="html">前回の続きです。&lt;br /&gt;
前回はタイプ２VMM、ハイブリッドVMMと見てみました。&lt;br /&gt;
今回は、タイプ１VMMとよばれる仮想化アーキテクチャをみてみましょう。&lt;br /&gt;
いわゆる、Hyper-VやXenなど 現在主流となっているハイパーバイザによる方式は&lt;br /&gt;
このタイプ１VMMの形式にあたります。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-CgJmZgkdVSU/TeEOVahrLXI/AAAAAAAABCA/VncrPflL0Xw/s1600/55.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-CgJmZgkdVSU/TeEOVahrLXI/AAAAAAAABCA/VncrPflL0Xw/s1600/55.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;今度は、寮をイメージしてみてください。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;各ハードウェアを管理する管理人さんがいて、寮生の部屋のわりあてます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;もちろん、寮長もその対象。寮長はそこに住んでいる寮生の生活やあらゆる面倒をみている、というイメージです。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;ハイブリッドVMMと違い、管理人さんがハードウェアを管理しているので寮生の要望にすぐ答えられるようになっています。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;管理人さんにとって扱いやすいハードウェアも流通し（仮想化支援機能 IntelVT,　AMD-V)、寮生にとってはまるで自分の家のような快適さが実現されてきています。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;さて、タイプ１VMMですが、管理人さんの管理の仕方で二つのタイプに分かれます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-HJk_1Wgm9Jk/TeEgkq2OupI/AAAAAAAABCI/DVE_pnI-pBc/s1600/56.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-HJk_1Wgm9Jk/TeEgkq2OupI/AAAAAAAABCI/DVE_pnI-pBc/s1600/56.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;モノリシック型の代表例として、VMWare ESX Server、KVMなどがあげられます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;対して、マイクロカーネル型はHyper-VやXenなどが例として上げることができます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;どちらもそれぞれ利点があるのですが、お絵かきWindowsなので（笑）&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;マイクロカーネル型であるHyper-Vについて今後色々と描いていきたいと思います。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;なお、仮想化についてもっと詳しく知りたい、という人は以下の記事が参考になります。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;エンジニアなら知っておきたい仮想化の仕組み&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://gihyo.jp/dev/serial/01/vm_work/0001"&gt;http://gihyo.jp/dev/serial/01/vm_work/0001&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;仮想化の歴史や、内部の動きなどが詳しく書かれています。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-1805877044542090114?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/GTpys4IJans" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/1805877044542090114/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2011/05/3.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/1805877044542090114?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/1805877044542090114?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/GTpys4IJans/3.html" title="皐月3.仮想化タイプと住居２" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-CgJmZgkdVSU/TeEOVahrLXI/AAAAAAAABCA/VncrPflL0Xw/s72-c/55.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2011/05/3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMMRnw9fyp7ImA9WhZVEUs.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-6122063272074454799</id><published>2011-05-23T23:21:00.000+09:00</published><updated>2011-05-23T23:21:27.267+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-23T23:21:27.267+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="仮想化" /><title>皐月2.仮想化タイプと住居</title><content type="html">仮想化によるアーキテクチャには主に３つ種類があります。&lt;br /&gt;
今回は、住居にたとえてみましょう。&lt;br /&gt;
&lt;br /&gt;
まずはタイプ２VMM&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-3I2cvHy9eVE/TdphGHuNnOI/AAAAAAAABB4/X71KcJCM9Iw/s1600/53.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-3I2cvHy9eVE/TdphGHuNnOI/AAAAAAAABB4/X71KcJCM9Iw/s320/53.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;タイプ２VMMは、仮想OSなどでは使われず、JAVAランタイムなどのアプリケーションでよく使われます。&lt;br /&gt;
イメージとしては、家主のみハードウェアを使い、住居人は仲介人によって、その人の環境にあった居住が与えられますが、直にハードウェアを扱うことはできません。&lt;br /&gt;
なお、JAVA仮想マシンや、.NETFrameworkの共通言語ランタイムなどがここでいう仲介人にあたります。&lt;br /&gt;
&lt;br /&gt;
次にハイブリッドVMM&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-X0rqoMTGZBk/Tdpm6eSOUiI/AAAAAAAABB8/XMJryq7JVuU/s1600/54.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://3.bp.blogspot.com/-X0rqoMTGZBk/Tdpm6eSOUiI/AAAAAAAABB8/XMJryq7JVuU/s320/54.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
これは、不動産屋さん経由で指定のハードウェアを住居人にも扱えるようなイメージ。&lt;br /&gt;
とはいえ、不動産屋さんは間取りの割りあてとかはしてくれるものの、ハードウェアの管理は基本　大家さん主体。&lt;br /&gt;
住居人がもっとハードウェア使いたいッと言ってきたとしても、不動産屋さんは、いちいち大家さんにお伺いをたてないといけないため、住居人にとってはハードウェアを扱うには若干レスポンスが悪い。&lt;br /&gt;
また、不動産屋さんは誰でも使えるようにハードウェアで使うコンセントや蛇口などは大家さんと違った汎用性のある一般的なものに変換して各住居人に提供しています。&lt;br /&gt;
大家さんがあとから不動産屋さんと契約して（インストールして）住居人を入れることができるため、お手軽だけれども上述したようにレスポンスに難はあるのがポイントです。&lt;br /&gt;
ハイブリッドVMMにあてはまるのはVirtualPC2007,VMwareWorkstation,VirtualBoxなどがあげられます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ちなみにWindows2008Serverで扱える Hyper-Vは、ハイパーバイザベースの仮想化テクノロジであり、タイプ１VMMによるアーキテクチャです。&lt;br /&gt;
次回は引き続き住居を例にして、タイプ１VMMと、さらにそこから分類されるモノリシック型とマイクロカーネル型について説明できればよいなと思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-6122063272074454799?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/xJDj-sNdZu4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/6122063272074454799/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2011/05/2.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/6122063272074454799?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/6122063272074454799?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/xJDj-sNdZu4/2.html" title="皐月2.仮想化タイプと住居" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-3I2cvHy9eVE/TdphGHuNnOI/AAAAAAAABB4/X71KcJCM9Iw/s72-c/53.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2011/05/2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUAQH44fCp7ImA9WhZWF04.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-1814233865739024732</id><published>2011-05-18T23:56:00.001+09:00</published><updated>2011-05-19T00:24:01.034+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-19T00:24:01.034+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="仮想化" /><title>皐月1.仮想化はカップラーメン</title><content type="html">&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;仮想環境に触れる機会が増えてきたので、自分なりに解釈したことを絵化していきたいと思います。&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;ちがう場合は指摘していただければありがたいです。&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
さて、コンピュータにおける仮想化とはそもそもどういうことなのでしょうか。&lt;br /&gt;
Wikipediaには以下のように書いてありました。&lt;br /&gt;
&lt;blockquote&gt;仮想化（英: Virtualization）とは、コンピュータにおいてリソースの抽象化を指す用語である。「リソースの物理的特性を、そのリソースと相互作用するシステム/アプリケーション/エンドユーザーから隠蔽する技法。単一の物理リソース（サーバ、OS、アプリケーション、補助記憶装置など）を複数の論理リソースに見せかけたり、複数の物理リソース（複数の補助記憶装置群やサーバ群）を単一の論理リソースに見せかけたりできる」という実用的定義がある[1]。また、単一の物理リソースを何らかの特性の異なる単一の論理リソースに見せかけることもできる。&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;Wikipedia-仮想化&amp;nbsp;&lt;a href="http://ja.wikipedia.org/wiki/%E4%BB%AE%E6%83%B3%E5%8C%96"&gt;http://ja.wikipedia.org/wiki/%E4%BB%AE%E6%83%B3%E5%8C%96&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
わかるような、わからないような・・&lt;br /&gt;
リソースの抽象化とはどういうことでしょう？&lt;br /&gt;
抽象化とは何か、またまたWikipediaで見てみます。&lt;br /&gt;
&lt;blockquote&gt;抽象化（ちゅうしょうか）とは、思考における手法のひとつで、対象から注目すべき要素を重点的に抜き出して他は無視する方法である。抽象化において無視することについては捨象するという。従って、抽象と捨象は盾の両面といえる。&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;Wikipedia-抽象化　&lt;a href="http://ja.wikipedia.org/wiki/%E6%8A%BD%E8%B1%A1%E5%8C%96"&gt;http://ja.wikipedia.org/wiki/%E6%8A%BD%E8%B1%A1%E5%8C%96&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
つまり、コンピュータのリソースを対象から注目すべき要素を重点的に抜き出して他は無視する方法を仮想化という。。&lt;br /&gt;
うーん、なんとなくわかるけれど利点が見えづらい。&lt;br /&gt;
&lt;br /&gt;
というわけで、少し現実世界にあるもの一例にとってみます。&lt;br /&gt;
例としてあげるのは・・　ラーメンです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
僕はラーメンが好きです。&lt;br /&gt;
特に北海道に行った時に 有名ラーメン店「すみれ」で食べた味噌ラーメンは濃厚でとっても美味しかったー。&lt;br /&gt;
さてさて、このすみれの味噌ラーメンはもちろん北海道の「すみれ」に行かないと食べることは出来ません。また、北海道に行ったとしてもうどん屋や別のラーメン店に入ってしまうと 当然すみれのラーメンなんか出てこないです。&lt;br /&gt;
つまり、すみれのラーメンを食べるためには、&lt;br /&gt;
北海道の　- 札幌にある　- すみれに行って -　味噌ラーメンを注文し、 -  ラーメンを食べる&lt;br /&gt;
という段階を踏む必要があります。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-NUXuqCGRmCQ/TdPTR9qsyZI/AAAAAAAABBg/Lnj1k60xF7w/s1600/50.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-NUXuqCGRmCQ/TdPTR9qsyZI/AAAAAAAABBg/Lnj1k60xF7w/s1600/50.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
さて、これを仮想化・抽象化しようとすると・・。&lt;br /&gt;
「対象から注目すべき要素を重点的に抜き出して他は無視する方法」が抽象化ということなので、ここで注目すべき要素とは何か。そう、「すみれのラーメンを食べること」ですね。&lt;br /&gt;
別に北海道の札幌のすみれのお店に行かなくても、すみれのラーメンを食べることができれば良いのです。つまり、どういうことかというと・・。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
カップラーメン化です。&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-dCY0G7Em8bI/TdPT_L8xWmI/AAAAAAAABBk/KVEkuFYQWBY/s1600/51.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-dCY0G7Em8bI/TdPT_L8xWmI/AAAAAAAABBk/KVEkuFYQWBY/s1600/51.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;仮想化＝カップラーメン化&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
はい、これでわざわざ北海道にいかなくてもすみれのラーメンをすぐ食べることができるようになりました。つまり、「地理的（物理的）制約などは無視して、すみれにあるラーメンを重点的に抜き出した」ということでしょうか。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-1xK-rM0E658/TdPjq8WvagI/AAAAAAAABBs/CeWNa1dzzwQ/s1600/52.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-1xK-rM0E658/TdPjq8WvagI/AAAAAAAABBs/CeWNa1dzzwQ/s1600/52.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;コンピュータの仮想化もいわゆる、カップラーメン化。&lt;br /&gt;
対象となる部分は、OSであったりアプリケーションであったり多岐にわたるけれども、要は重要なリソース部を抜き出して、それ以外の依存度を減らすこと。&lt;br /&gt;
JAVAやFLASHはプラグインを入れさえすれば、WindowsやMac、スマートフォンでも同じようにアプリケーションは動くし（アプリケーションの仮想化）、GoogleAppなどのクラウドはハードウェアごとまるまるカップラーメン化して、ネットさえつながれば非力なマシンですら同じようにサービスを受けることができるようになっています。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
今現在　仮想化といえば、OSの仮想化を指すことが多いですけれど、&lt;br /&gt;
カップラーメンとして考えてみれば　おのずとメリット・デメリットがみえてくるのではないでしょうか。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-1814233865739024732?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/cvFM97J0T6E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/1814233865739024732/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2011/05/1.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/1814233865739024732?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/1814233865739024732?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/cvFM97J0T6E/1.html" title="皐月1.仮想化はカップラーメン" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-NUXuqCGRmCQ/TdPTR9qsyZI/AAAAAAAABBg/Lnj1k60xF7w/s72-c/50.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2011/05/1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQMQX0_fyp7ImA9WhdXFUQ.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-7514273896197062181</id><published>2011-03-27T13:32:00.006+09:00</published><updated>2011-08-29T13:49:40.347+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-29T13:49:40.347+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Powershell" /><title>東京電力電力供給状況APIを使ってPowerShellからデータ出力</title><content type="html">久々の投稿です。しばらくPowerShellを扱ってなかったので、リハビリ。&lt;br /&gt;
&lt;br /&gt;
関東では現在計画停電が行われていますが、&lt;br /&gt;
有志にて東京電力の電力使用状況APIを公開している方がいます。&lt;br /&gt;
&lt;br /&gt;
東京電力の電気使用状況 API&lt;br /&gt;
&lt;a href="http://denki.cuppat.net/"&gt;http://denki.cuppat.net/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
これを利用して二日分の電力データをPowerShellにて出力してみます。&lt;br /&gt;
&lt;pre class="brush: ps;"&gt;&lt;span class="Apple-style-span"&gt;Function Get-Data {
&amp;nbsp;&amp;nbsp; &amp;nbsp;Param($date)
&amp;nbsp;&amp;nbsp; &amp;nbsp;if ($WebClient -eq $null) {
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$Global:WebClient=new-object System.Net.WebClient
&amp;nbsp;&amp;nbsp; &amp;nbsp;}
&amp;nbsp;&amp;nbsp; &amp;nbsp;$results=$webClient.DownloadString("http://denki.cuppat.net/data/$($date).json")
&amp;nbsp;&amp;nbsp; &amp;nbsp;$Results -match """hours"":\[(?&amp;lt;hour&amp;gt;.*)].*""capability""\:(?&amp;lt;cap&amp;gt;.*)," &amp;gt; $null
&amp;nbsp;&amp;nbsp; &amp;nbsp;$matches
}

Function Check-Data {
&amp;nbsp;&amp;nbsp; &amp;nbsp;Param($getdata)

&amp;nbsp;&amp;nbsp; &amp;nbsp;$Ltime = $getdata.hour -split ","
&amp;nbsp;&amp;nbsp; &amp;nbsp;$cap=$getdata.cap
&amp;nbsp;&amp;nbsp; &amp;nbsp;write-host キャパシティ $cap

&amp;nbsp;&amp;nbsp; &amp;nbsp;0..$(($Ltime.length)-1)|% {

&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$p=$ltime[$_]/$cap

&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ($p -ge 0.95) {
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$colorname="red"
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}elseif ($p -ge 0.90) {
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $colorname="darkyellow"
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}else {
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$colorname="black"
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; 

&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$a="{0:00}時:電力{1} {2:00}% {3}{4}|" -F $_,$ltime[$_],$($p*100),$("#"*$($p*50)),$(" "*(50-$($p*50)))
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;write-host $a -ForegroundColor $colorname
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
}

$tdata=Get-Data($(get-date -uformat "%Y%m%d"))
$ydata=Get-Data($(get-date -uformat "%Y%m%d")-1)

check-data($ydata)
check-data($tdata)
&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
実行した結果はこちら。&lt;br /&gt;
９０％以上の利用率で黄色、９５％以上で赤字で出力します。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-sB83HdgmkDk/TY68wzNv3QI/AAAAAAAAA9A/omvA-5TzdKU/s1600/den.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://3.bp.blogspot.com/-sB83HdgmkDk/TY68wzNv3QI/AAAAAAAAA9A/omvA-5TzdKU/s640/den.png" width="597" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;こうみると、やはり夕方は電力量が上がってますね。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;僕も引き続き、節電していきたいと思います。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-7514273896197062181?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/4Jp4wql8hnA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/7514273896197062181/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2011/03/apipowershell.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/7514273896197062181?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/7514273896197062181?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/4Jp4wql8hnA/apipowershell.html" title="東京電力電力供給状況APIを使ってPowerShellからデータ出力" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-sB83HdgmkDk/TY68wzNv3QI/AAAAAAAAA9A/omvA-5TzdKU/s72-c/den.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2011/03/apipowershell.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcDSXk_eSp7ImA9WhdXFUQ.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-3961090720571596473</id><published>2010-12-20T22:47:00.013+09:00</published><updated>2011-08-29T14:01:18.741+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-29T14:01:18.741+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="余談" /><category scheme="http://www.blogger.com/atom/ns#" term="Powershell" /><title>PowerShellでTwitter</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zYZ64MvBrL0/TQ9NImIN1sI/AAAAAAAAA8I/9YYIt6fcq2U/s1600/49.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zYZ64MvBrL0/TQ9NImIN1sI/AAAAAAAAA8I/9YYIt6fcq2U/s1600/49.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;ということでPowerShellを使って Twitterチェックスクリプトを作っているのだけど&lt;br /&gt;
自分のやりたい挙動の八割はできたー。&lt;br /&gt;
こうやってTwitterを眺めているとなかなか面白い。&lt;br /&gt;
少しずつ作成した箇所を紹介できればいいなぁと思います。&lt;br /&gt;
&lt;br /&gt;
とりあえず、こちら。&lt;br /&gt;
Twitter API の仕様書　日本語訳&lt;br /&gt;
&lt;a href="http://watcher.moe-nifty.com/memo/docs/twitterAPI.txt"&gt;http://watcher.moe-nifty.com/memo/docs/twitterAPI.txt&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
あと、TwitterAPI searchについてはこちらも参考になりました。&lt;br /&gt;
&lt;br /&gt;
Twitter Search API の使い方&lt;br /&gt;
&lt;a href="http://www.ibm.com/developerworks/jp/xml/library/x-twitsrchapi/"&gt;http://www.ibm.com/developerworks/jp/xml/library/x-twitsrchapi/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
なにはともあれ、Twitter Search APIを使って情報をとってみる。&lt;br /&gt;
&lt;pre class="brush: ps;"&gt;Function Get-TwitterSearch {

 Param($searchTerm)

 if ($WebClient -eq $null) {
  $Global:WebClient=new-object System.Net.WebClient
 }

 $results=[xml]($webClient.DownloadString("http://search.twitter.com/search.atom?lang=ja&amp;amp;q=$SearchTerm"))
 $Searchitems=$results.feed.entry

 $SearchItems
}&lt;/span&gt;
&lt;/pre&gt;&lt;br /&gt;
Get-TwitterSearch関数をつくって、引数に検索する文字を入れることで、&lt;br /&gt;
Twitter情報をxml形式でひっぱって返してくれます。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_zYZ64MvBrL0/TQ9UIGQI-tI/AAAAAAAAA8M/tJK-vy8EKaM/s1600/20101220220025.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="263" src="http://3.bp.blogspot.com/_zYZ64MvBrL0/TQ9UIGQI-tI/AAAAAAAAA8M/tJK-vy8EKaM/s400/20101220220025.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;検索の仕様だとかは上記の参考リンクを参照してもらうとして・・。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;データをとれればしめたもの。あとはいくらでもPowerShellで編集できちゃいます。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;とりあえず、名前と時間、つぶやきを取得したいのであればこんな感じ。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;PowerShellをつぶやいた人をとってみました。&lt;/div&gt;&lt;br /&gt;
&lt;pre class="prettyprint"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;$tdata= Get-TwitterSearch PowerShell
$tdata | %{ write-host $_.author.name "--" $([datetime]$_.published); write-host $_.title; write-host }
&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zYZ64MvBrL0/TQ9cTxPVxrI/AAAAAAAAA8Q/2vL-XQ1_1_8/s1600/20101220223531.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="263" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/TQ9cTxPVxrI/AAAAAAAAA8Q/2vL-XQ1_1_8/s400/20101220223531.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;あとはこれを応用すれば　&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;好きなキーワードをストリーミングでずっと流し続けることができると。&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;任意のユーザーに対しても検索できるので、その紹介はまた機会あらば。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-3961090720571596473?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/jKE0bLs8kik" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/3961090720571596473/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2010/12/powershelltwitter.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/3961090720571596473?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/3961090720571596473?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/jKE0bLs8kik/powershelltwitter.html" title="PowerShellでTwitter" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_zYZ64MvBrL0/TQ9NImIN1sI/AAAAAAAAA8I/9YYIt6fcq2U/s72-c/49.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2010/12/powershelltwitter.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYBSH0zfCp7ImA9WhdXFUQ.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-1606028900669670148</id><published>2010-11-15T23:39:00.003+09:00</published><updated>2011-08-29T14:02:39.384+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-29T14:02:39.384+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Powershell" /><title>ログの書き込みがあったら知らせるスクリプト</title><content type="html">前回の続き。&lt;br /&gt;
&lt;a href="http://win-enikki.blogspot.com/2010/11/usbpowershell.html"&gt;http://win-enikki.blogspot.com/2010/11/usbpowershell.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
前回はUSBメモリ使用者にログオフ時にメッセージ出力するスクリプトを紹介しました。&lt;br /&gt;
今回は、出力ログを監視することで監視者に知らせるスクリプトを紹介します。&lt;br /&gt;
とりあえず、スクリプト例を以下に表示します。&lt;br /&gt;
&lt;pre class="brush: ps;"&gt;$writeDir="\\buso-pcv\test"
$writeTxt="usblog.txt"
$tmpColor= @("Red", "Blue", "Green", "Magenta", "DarkCyan")

[Void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

$i = 0 #終了フラグ
$cl = 0 #カラーバリエーション
$watcher = New-Object System.IO.FileSystemWatcher&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # FileSystemWatcherの作成
$watcher.Path = $writeDir&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 監視対象のフォルダ指定
$watcher.Filter = $writeTxt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # フィルター
$watcher.NotifyFilter = [System.IO.NotifyFilters]::LastWrite 

$NotifyIcon = New-Object System.Windows.Forms.NotifyIcon
$powerShellExe = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
$icon = [System.Drawing.Icon]::ExtractAssociatedIcon($powerShellExe)
$notifyIcon.Icon = $icon
$notifyIcon.Visible = $true

Write-Host "チェック開始します。"

while ($i -ge 0)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; $result = $watcher.WaitForChanged([System.IO.WatcherChangeTypes]::ALL)
&amp;nbsp;&amp;nbsp;&amp;nbsp; $tmpVar = $(Get-Content "$writeDir\$writeTxt")[-1] -split ","
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host ""
&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host "#########################################"
&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-host "【コンピュータ】"　　$tmpVar[0] -ForegroundColor $tmpColor[$cl]
&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-host "【ユーザー】"　　$tmpVar[1] -ForegroundColor $tmpColor[$cl]
&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-host "【ログオフ時刻】"　　$tmpVar[2] -ForegroundColor $tmpColor[$cl]
&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host "#########################################"
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; $notifyIcon.ShowBalloonTip("1", "USBチェック", "USBメモリがささっているユーザーがいます", "Info")

&amp;nbsp;&amp;nbsp;&amp;nbsp; $cl+=1
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($cl -eq $tmpColor.length) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $cl=0
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}&lt;/pre&gt;&lt;br /&gt;
ここでのポイントはFileSystemWatcher クラスです。&lt;br /&gt;
FileSystemWatcher クラス &lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.io.filesystemwatcher%28VS.80%29.aspx"&gt;http://msdn.microsoft.com/ja-jp/library/system.io.filesystemwatcher%28VS.80%29.aspx&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
監視ログを対象に、書き込みが発生したらログの最終行を出力させる。&lt;br /&gt;
また、ログは変更した場合分かりやすいようtmpColorにある配列順に文字色を代えるようにしています。&lt;br /&gt;
ついでに、NotifyIconクラスを使用してバルーン表示もさせています。&lt;br /&gt;
NotifyIconクラス&lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.windows.forms.notifyicon%28VS.80%29.aspx"&gt;http://msdn.microsoft.com/ja-jp/library/system.windows.forms.notifyicon%28VS.80%29.aspx&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
以上の結果でこのように表示されます。&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zYZ64MvBrL0/TOFFgksT54I/AAAAAAAAA8E/hVhA-SYVMpw/s1600/20101110204832.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/TOFFgksT54I/AAAAAAAAA8E/hVhA-SYVMpw/s320/20101110204832.JPG" width="247" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;出力ごとに色が変わり、バルーンも出力&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
このスクリプトは、今回だけでなく他でもログに書き込みがあった場合の監視ができるので、&lt;br /&gt;
色々汎用性が高いかなーとおもってます。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zYZ64MvBrL0/TOFE3VJe3DI/AAAAAAAAA8A/w0Y5I-CHFxA/s1600/48.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/TOFE3VJe3DI/AAAAAAAAA8A/w0Y5I-CHFxA/s1600/48.jpg" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;いかがでしょうかー。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-1606028900669670148?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/NjclT93ws9U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/1606028900669670148/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2010/11/blog-post.html#comment-form" title="2 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/1606028900669670148?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/1606028900669670148?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/NjclT93ws9U/blog-post.html" title="ログの書き込みがあったら知らせるスクリプト" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_zYZ64MvBrL0/TOFFgksT54I/AAAAAAAAA8E/hVhA-SYVMpw/s72-c/20101110204832.JPG" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2010/11/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMBQ3w5fCp7ImA9WhdXFUQ.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-8866332233460983317</id><published>2010-11-10T21:30:00.002+09:00</published><updated>2011-08-29T14:07:32.224+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-29T14:07:32.224+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Powershell" /><title>USBメモリ抜き忘れ防止スクリプトをPowerShellでやってみる</title><content type="html">久々にPowerShellを使う機会にめぐまれたので、投稿します。&lt;br /&gt;
&lt;br /&gt;
USBメモリ、今では安価となりかなり利用率は増えましたが&lt;br /&gt;
それと同時にメモリの抜き忘れも増えているみたいです。 &lt;br /&gt;
なんとかならんのかー、という要望があったので&lt;br /&gt;
折角なのでPowerShellでログオフ時にUSBメモリがささっているとダイアログを出すスクリプトを作ってみました。&lt;br /&gt;
ちなみに、色々ネット上にある参考スクリプトをツギハギしたりしています。&lt;br /&gt;
使用時は自己責任でお願いします　＞＜&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zYZ64MvBrL0/TNp8AKQy69I/AAAAAAAAA7k/fzHsMwF0GjI/s1600/45.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zYZ64MvBrL0/TNp8AKQy69I/AAAAAAAAA7k/fzHsMwF0GjI/s1600/45.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
とりあえず、1つ目のポイントとして、USBメモリの有無確認ですが、&lt;br /&gt;
win32_usbhub クラスを利用することでみつけることができます。&lt;br /&gt;
&lt;br /&gt;
Win32_USBHub クラス -  WMI Fun !!&lt;br /&gt;
&lt;a href="http://www.wmifun.net/library/win32_usbhub.html"&gt;http://www.wmifun.net/library/win32_usbhub.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
USBメモリの場合、Nameが "USB 大容量記憶装置"であり、&lt;br /&gt;
Statusが"OK"であれば、ほぼちゃんと認識された状態のUSBメモリがささっているといえます。&lt;br /&gt;
&lt;pre class="brush: ps;"&gt;Get-WmiObject -Class win32_usbhub | ? { $_.name -eq "USB 大容量記憶装置" } | ? { $_.status -eq&amp;nbsp; "OK" }&lt;/pre&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zYZ64MvBrL0/TNpk5v0zT1I/AAAAAAAAA7Y/oXLFOAmJ3Cs/s1600/20101110182129.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="239" src="http://1.bp.blogspot.com/_zYZ64MvBrL0/TNpk5v0zT1I/AAAAAAAAA7Y/oXLFOAmJ3Cs/s400/20101110182129.JPG" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;USBメモリをさしていた場合&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
あとは、ダイアログとして出すようにスクリプトを組めば完成です。&lt;br /&gt;
詳細は以下。&lt;br /&gt;
&lt;pre class="brush: ps;"&gt;#USBログオフ時メッセージプロンプト処理
#メッセージ文
$messagePath="C:\temp\usbmessage.txt"
#ログ出力パス
$usbLOG="\\buso-pcv\test\usblog.txt"

#--------------------------------------
#メッセージボックス
#--------------------------------------
function MessageBox([string]$p_value = "")
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; [Void][Windows.Forms.MessageBox]::Show($p_value,"お知らせ","OK", "Warning")
}


$crUSB = Get-WmiObject -Class win32_usbhub | ? { $_.name -eq "USB 大容量記憶装置" } | ? { $_.status -eq&amp;nbsp; "OK" }


if ($crUSB) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; write-output "$env:computername,$env:username,$(get-date)" &amp;gt;&amp;gt; $usbLOG

&amp;nbsp;&amp;nbsp;&amp;nbsp; #Windowsフォームのロード
&amp;nbsp;&amp;nbsp;&amp;nbsp; [Void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms");

&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox $([String]::Join("`r`n", (Get-Content $messagePath)))
&amp;nbsp;&amp;nbsp; 
}
&lt;/pre&gt;&amp;nbsp;メッセージ文は、いろんな人が編集する場所でもあることから、&lt;br /&gt;
別テキストからの呼び出しに 。（ここでは　"C:\temp\usbmessage.txt"）&lt;br /&gt;
以下のようにusbmessage.txtに書いてみました。&lt;br /&gt;
&lt;blockquote&gt;USBがさしっぱなしだぞー( ﾟДﾟ)&lt;br /&gt;
誰かに盗まれても知らないぞ( ´∀｀)&lt;br /&gt;
って、席にもういないッッΣΣ(ﾟДﾟ；)&lt;/blockquote&gt;また、ダイヤログが出たときに、使用者のホスト名、ユーザー名、時刻を吐き出すようにしてみました。&lt;br /&gt;
このスクリプトをログオフスクリプトとして設置しておけば完了です。 &lt;br /&gt;
実際に使用するとこんな感じ。&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zYZ64MvBrL0/TNprAdR5FPI/AAAAAAAAA7c/1ZPG1hw4iq4/s1600/20101110184857.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="210" src="http://4.bp.blogspot.com/_zYZ64MvBrL0/TNprAdR5FPI/AAAAAAAAA7c/1ZPG1hw4iq4/s320/20101110184857.JPG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;USB差しっぱなしでログオフした場合&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zYZ64MvBrL0/TNptcvntYzI/AAAAAAAAA7g/t8YWUIdgUCg/s1600/20101110185153.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="152" src="http://1.bp.blogspot.com/_zYZ64MvBrL0/TNptcvntYzI/AAAAAAAAA7g/t8YWUIdgUCg/s320/20101110185153.JPG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;usblogに記録されたログ&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
ちなみにGPOでPowershellのログオフスクリプトを管理する場合には、&lt;br /&gt;
スクリプト実行ポリシーを有効にすることと、PowerShell用のタブが別途あるので注意しましょう。&lt;br /&gt;
（あと、もちろん適用環境ではPowerShellがインストールされていることが前提です（笑））&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zYZ64MvBrL0/TNqM8py4h0I/AAAAAAAAA74/tjW3qarcVho/s1600/20101110211328.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="201" src="http://4.bp.blogspot.com/_zYZ64MvBrL0/TNqM8py4h0I/AAAAAAAAA74/tjW3qarcVho/s320/20101110211328.JPG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;GPOによるスクリプト実行ポリシーの許可&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zYZ64MvBrL0/TNqN5wiAuKI/AAAAAAAAA78/U0ffARwJGOE/s1600/20101110211810.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="134" src="http://1.bp.blogspot.com/_zYZ64MvBrL0/TNqN5wiAuKI/AAAAAAAAA78/U0ffARwJGOE/s320/20101110211810.JPG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;ログオフスクリプトのPowerShellタブ&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
また、「ハードウェアの安全な取り外し」を行わなくても大丈夫か？という点については&lt;br /&gt;
書き込み中でなければ、ほぼ問題ないとのこと。&lt;br /&gt;
ログオフ後なら なおのこと　その後ぬいても問題ないでしょう。&lt;br /&gt;
どうしても怖いというのであれば、もう一度ログインして手順を踏んで抜いてもらうということで。&lt;br /&gt;
&lt;br /&gt;
USBメモリやUSB HDDを安心して取り外す　- &lt;b&gt;ITmedia&lt;/b&gt; &lt;br /&gt;
&lt;a href="http://bizmakoto.jp/bizid/articles/0710/03/news062.html"&gt;http://bizmakoto.jp/bizid/articles/0710/03/news062.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
さて、これで使用者には注意を促しましたが、上記のメッセージにある通り&lt;br /&gt;
そもそも、使用者はログオフボタンを押した時点で皆　律儀に席に座っているとはかぎりません。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_zYZ64MvBrL0/TNp8GXZ-l0I/AAAAAAAAA7o/qJX4GLOpTUY/s1600/46.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_zYZ64MvBrL0/TNp8GXZ-l0I/AAAAAAAAA7o/qJX4GLOpTUY/s1600/46.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;なので、USBメモリをさしてログオフした人を管理者へ知らせるスクリプトも作ってみました。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zYZ64MvBrL0/TNqJuqoT83I/AAAAAAAAA70/XmxtWxIbzY0/s1600/47.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zYZ64MvBrL0/TNqJuqoT83I/AAAAAAAAA70/XmxtWxIbzY0/s1600/47.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
今回は長くなったので、スクリプトについてはまた次回。&lt;br /&gt;
ちなみに動作としてはこんな感じに出力させました。&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zYZ64MvBrL0/TNqG_777QTI/AAAAAAAAA7w/QUe8MkTfqTA/s1600/20101110204832.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/_zYZ64MvBrL0/TNqG_777QTI/AAAAAAAAA7w/QUe8MkTfqTA/s400/20101110204832.JPG" width="308" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;USBメモリさし忘れ監視&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;ログを監視し続けて、書き込みがあったら出力、ついでにポップアップ表示もさせています。 &lt;br /&gt;
では、また次回。（といって、またえらく時間あいたら嫌だな・・）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-8866332233460983317?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/4jjKczX8akg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/8866332233460983317/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2010/11/usbpowershell.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/8866332233460983317?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/8866332233460983317?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/4jjKczX8akg/usbpowershell.html" title="USBメモリ抜き忘れ防止スクリプトをPowerShellでやってみる" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_zYZ64MvBrL0/TNp8AKQy69I/AAAAAAAAA7k/fzHsMwF0GjI/s72-c/45.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2010/11/usbpowershell.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEEQno5fip7ImA9Wx5REEg.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-5822661460719987955</id><published>2010-08-18T00:06:00.000+09:00</published><updated>2010-08-18T00:06:43.426+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-18T00:06:43.426+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tips" /><category scheme="http://www.blogger.com/atom/ns#" term="グループポリシー" /><category scheme="http://www.blogger.com/atom/ns#" term="監査ポリシー" /><category scheme="http://www.blogger.com/atom/ns#" term="設定" /><title>ActiveDirectoryでの監査ポリシーを考えてみる</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;ADを運用していると、&lt;br /&gt;
オブジェクトの変更をしたりログイン・ログオフしたときの様々なログを取得したいーという要望があります。&lt;br /&gt;
そんな時は、ADによる 監査ポリシーを使用するという手段がありました。&lt;br /&gt;
しかし、監査ポリシーの使用は精度があまり高くない、使いにくいという話もちらほら聞こえたりしていて&lt;br /&gt;
結局積極的に使用を控えていました。&lt;br /&gt;
しかし、2008R2Serverも浸透している現在、少し立ち戻って本当に使えないのか少し検証してみたいと思います。&lt;br /&gt;
&lt;br /&gt;
・監査ポリシーとは &lt;br /&gt;
Technet 監査ポリシー&lt;br /&gt;
&lt;a href="http://technet.microsoft.com/ja-jp/library/cc730601%28WS.10%29.aspx"&gt;http://technet.microsoft.com/ja-jp/library/cc730601%28WS.10%29.aspx&lt;/a&gt;&lt;br /&gt;
上記にあるように、GPOによる設定で様々な「監査」を実施することで、セキュリティログへ情報を書き出します。&lt;br /&gt;
設定できる監査項目は以下のとおり。&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://lh3.ggpht.com/_zYZ64MvBrL0/TGqXe2t9zqI/AAAAAAAAA5k/-9reCnJWBJc/39.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://lh3.ggpht.com/_zYZ64MvBrL0/TGqXe2t9zqI/AAAAAAAAA5k/-9reCnJWBJc/39.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;http://technet.microsoft.com/ja-jp/library/cc787176%28WS.10%29.aspx&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;---&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://lh6.ggpht.com/_zYZ64MvBrL0/TGqa4EgTCDI/AAAAAAAAA5o/2Dge5quc08U/40.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://lh6.ggpht.com/_zYZ64MvBrL0/TGqa4EgTCDI/AAAAAAAAA5o/2Dge5quc08U/40.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;http://technet.microsoft.com/ja-jp/library/cc787567%28WS.10%29.aspx&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
---&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://lh3.ggpht.com/_zYZ64MvBrL0/TGqd1zm5T0I/AAAAAAAAA5s/NrhePGAPe7o/41.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://lh3.ggpht.com/_zYZ64MvBrL0/TGqd1zm5T0I/AAAAAAAAA5s/NrhePGAPe7o/41.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;http://technet.microsoft.com/ja-jp/library/cc737542%28WS.10%29.aspx&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
---&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://lh3.ggpht.com/_zYZ64MvBrL0/TGqgsDMo_fI/AAAAAAAAA6I/9HpVUMw7KT0/42.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://lh3.ggpht.com/_zYZ64MvBrL0/TGqgsDMo_fI/AAAAAAAAA6I/9HpVUMw7KT0/42.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;http://technet.microsoft.com/ja-jp/library/cc776774%28WS.10%29.aspx&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;---&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_zYZ64MvBrL0/TGqjZx1TiYI/AAAAAAAAA6Y/bHbnzt3EWNs/43.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://lh5.ggpht.com/_zYZ64MvBrL0/TGqjZx1TiYI/AAAAAAAAA6Y/bHbnzt3EWNs/43.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;http://technet.microsoft.com/ja-jp/library/cc728087%28WS.10%29.aspx&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;---&lt;br /&gt;
&lt;br /&gt;
残り４つの監査項目はまた次回。&lt;br /&gt;
監査ポリシーの問題点や、チューニングについてもおいおい調べていきたいと思ってます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-5822661460719987955?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/fmCW-mWfWjo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/5822661460719987955/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2010/08/activedirectory.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/5822661460719987955?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/5822661460719987955?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/fmCW-mWfWjo/activedirectory.html" title="ActiveDirectoryでの監査ポリシーを考えてみる" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_zYZ64MvBrL0/TGqXe2t9zqI/AAAAAAAAA5k/-9reCnJWBJc/s72-c/39.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2010/08/activedirectory.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMMRHszcSp7ImA9Wx5SE0s.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-6812294280474170908</id><published>2010-08-09T23:34:00.000+09:00</published><updated>2010-08-09T23:34:45.589+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-09T23:34:45.589+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="記事" /><category scheme="http://www.blogger.com/atom/ns#" term="Tips" /><title>DISMコマンド</title><content type="html">DISMコマンドは7には標準搭載されているコマンドですが、色々できるようです。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zYZ64MvBrL0/TGAMy9R6dmI/AAAAAAAAA40/zS_oEFdjsOs/s1600/38.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/_zYZ64MvBrL0/TGAMy9R6dmI/AAAAAAAAA40/zS_oEFdjsOs/s400/38.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
WindowsTips&lt;br /&gt;
新しい DISM ツールを使用して Windows イメージを準備およびサービスする&lt;br /&gt;
&lt;a href="http://technet.microsoft.com/ja-jp/windows/ee183884.aspx"&gt;http://technet.microsoft.com/ja-jp/windows/ee183884.aspx&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
COMPUTERWORLD BLOG&lt;br /&gt;
VHD のオフラインパッチ by DISM &lt;br /&gt;
&lt;a href="http://blog.computerworld.jp/2010/08/09/offlinepatch-by-dism/"&gt;http://blog.computerworld.jp/2010/08/09/offlinepatch-by-dism/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
@IT&lt;br /&gt;
Windows 7／Windows Server 2008 R2のコンポーネントをdismコマンドで管理する&lt;br /&gt;
&lt;a href="http://www.atmarkit.co.jp/fwin2k/win2ktips/1296dism/dism.html"&gt;http://www.atmarkit.co.jp/fwin2k/win2ktips/1296dism/dism.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
な○の 屋&lt;br /&gt;
WinPE 3.0 ( Windows AIK for Windows 7 )&lt;br /&gt;
&lt;a href="http://yuichi.tea-nifty.com/blog/2009/08/winpe-30-window.html"&gt;http://yuichi.tea-nifty.com/blog/2009/08/winpe-30-window.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Windows 7 エンタープライズ ショート ビデオ &lt;br /&gt;
How Do I: Deployment Image Servicing and Management (DISM)?&lt;br /&gt;
&lt;a href="http://technet.microsoft.com/ja-jp/windows/dd320284.aspx"&gt;http://technet.microsoft.com/ja-jp/windows/dd320284.aspx&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
Dism /? でヘルプが出ます。&lt;br /&gt;
上記記事にあるように、適用したパッチをオフラインからアンインストールしたり、&lt;br /&gt;
イメージを展開することなく、更新プログラムの確認などができるようです。&lt;br /&gt;
&lt;br /&gt;
まだ、イメージ展開サービスやVHDファイルを運用レベルで使ってはいないのですが、&lt;br /&gt;
今後使用する機会もあるかもしれないですねー&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-6812294280474170908?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/m8oaKgYtOGc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/6812294280474170908/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2010/08/dism.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/6812294280474170908?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/6812294280474170908?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/m8oaKgYtOGc/dism.html" title="DISMコマンド" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_zYZ64MvBrL0/TGAMy9R6dmI/AAAAAAAAA40/zS_oEFdjsOs/s72-c/38.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2010/08/dism.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEABRng5fip7ImA9WxFWFUU.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-2920540422293437099</id><published>2010-06-04T01:11:00.004+09:00</published><updated>2010-06-04T01:32:37.626+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-04T01:32:37.626+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Powershell" /><title>PowerShellにしゃべらせる</title><content type="html">Windowsでしゃべらせるには色々な方法があるみたいですが、&lt;br /&gt;
.NET Framework 3.0 を入れているのであれば、Speech.Synthesis.SpeechSynthesizerクラスを使うのが楽っぽいです。&lt;br /&gt;
&lt;blockquote&gt;$null = [Reflection.Assembly]::LoadWithPartialName("System.Speech")&lt;br /&gt;
$SMSpeaker = new-object System.Speech.Synthesis.SpeechSynthesizer &lt;/blockquote&gt;&lt;br /&gt;
あとは Speakメソッドでしゃべらせるだけ。&lt;br /&gt;
&lt;blockquote&gt;&amp;nbsp;$SMSpeaker.Speak("hello buso")&lt;/blockquote&gt;日本語はデフォでは対応していないらしく、Office2003についてくる&lt;b&gt;LH Kenj &lt;span style="font-weight: normal;"&gt;なんかの音声合成エンジンを使わなければならないっぽい。&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-weight: normal;"&gt;２０１０も出る今となってOffice2003といわれてもなぁ。&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-weight: normal;"&gt;ちなみに、ツイッターと連動させて読み上げさせるスクリプトを作っている人もいました。 &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-weight: normal;"&gt; うーん、僕も日本語でも読み上げさせたいぞ。&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-weight: normal;"&gt;まぁ、監視として、何かあったら読み上げるというのもこれで簡単にできそうですね。&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zYZ64MvBrL0/TAfTluQxP4I/AAAAAAAAA3A/sLfzCvkcXGk/s1600/37.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_zYZ64MvBrL0/TAfTluQxP4I/AAAAAAAAA3A/sLfzCvkcXGk/s400/37.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-2920540422293437099?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/zVlKA_81_M4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/2920540422293437099/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2010/06/powershell.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/2920540422293437099?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/2920540422293437099?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/zVlKA_81_M4/powershell.html" title="PowerShellにしゃべらせる" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_zYZ64MvBrL0/TAfTluQxP4I/AAAAAAAAA3A/sLfzCvkcXGk/s72-c/37.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2010/06/powershell.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UNQHo7eyp7ImA9WhdXFk8.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-4350938851740309567</id><published>2010-06-01T00:14:00.002+09:00</published><updated>2011-08-29T23:48:11.403+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-29T23:48:11.403+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ActiveDirectory" /><category scheme="http://www.blogger.com/atom/ns#" term="グループポリシー" /><category scheme="http://www.blogger.com/atom/ns#" term="Powershell" /><title>サーバのグループポリシーのリンク監視の方法を模索してみる その３</title><content type="html">さらにグループポリシーリンク監視の模索の続き。&lt;br /&gt;
&lt;a href="http://win-enikki.blogspot.com/2010/05/blog-post.html"&gt;サーバのグループポリシーのリンク監視の方法を模索してみる その１&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://win-enikki.blogspot.com/2010/05/blog-post_24.html"&gt;サーバのグループポリシーのリンク監視の方法を模索してみる その２&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
前回、前々回とポリシー編集とリンクの付与の比較を出力する方法を模索し、&lt;br /&gt;
スクリプトを作ってみました。処理内容はこんな感じ。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_zYZ64MvBrL0/TAPNExFShAI/AAAAAAAAA2U/k2B6wZ_FVI4/s1600/36.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_zYZ64MvBrL0/TAPNExFShAI/AAAAAAAAA2U/k2B6wZ_FVI4/s400/36.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
エラー時の動作などはまったく組み込んでないので参考程度でどぞ。&lt;br /&gt;
&lt;pre class="brush: ps;"&gt;#CheckGPO

Import-Module activedirectory
Import-Module grouppolicy

#origpoファイルの場所
$workpath="C:\hogehoge\"

#メール配信先設定
$smtpHost = "SMTPサーバアドレス"
$mailfrom = "FROMのアドレス"
$mailto = "メール配信先"
$mailsubject = "GPOCheckログ"
$mailer = New-Object System.net.mail.smtpclient($smtpHost)

function comparegpo ($crlink, $orilink, $crgpo, $origpo) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
#gpo設定　変更された場合は新しいGPOのバックアップを行い oriファイルを更新
&amp;nbsp;&amp;nbsp;&amp;nbsp; compare-object $crgpo $origpo -property modificationtime,gpostatus,displayname | Set-Variable diffgpo
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($diffgpo) { 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "$(get-date) :--GPO変更が発生しました"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $diffgpo | sort displayname | ft -AutoSize
&amp;nbsp;&amp;nbsp;&amp;nbsp; $timename=$(Get-ItemProperty $workpath\origpo.xml).LastWriteTime -replace "[/,:, ]",""

&amp;nbsp;&amp;nbsp;&amp;nbsp; $diffgpo | ? { $_.sideindicator -eq "&amp;lt;=" } | % { "backup実施"; backup-gpo $_.displayname -path $workpath\gpbackup | fl }
&amp;nbsp;&amp;nbsp;&amp;nbsp; move-item $workpath\origpo.xml $workpath\log\$timename"gpo.xml" | Out-null
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $crgpo | Export-Clixml $workpath\origpo.xml
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

#link設定 　変更された場合は oriファイルを更新
&amp;nbsp;&amp;nbsp;&amp;nbsp; compare-object $crlink $orilink -Property target,displayname,enabled | Set-Variable diffgpl
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($diffgpl) { 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "$(get-date) :--GPO Linkに増減が発生しました"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $diffgpl | sort displayname | ft -AutoSize
&amp;nbsp;&amp;nbsp;&amp;nbsp; $timename=$(Get-ItemProperty $workpath\orilink.xml).LastWriteTime -replace "[/,:, ]",""
&amp;nbsp;&amp;nbsp;&amp;nbsp; move-item $workpath\orilink.xml $workpath\log\$timename"orilink.xml"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $crlink | Export-Clixml $workpath\orilink.xml 
&amp;nbsp;&amp;nbsp;&amp;nbsp; }

}

#origpo存在チェック
if (test-path "$workpath\origpo.xml"){
&amp;nbsp;&amp;nbsp;&amp;nbsp; $origpo=Import-Clixml "$workpath\origpo.xml"
} else {
&amp;nbsp;&amp;nbsp;&amp;nbsp; "origpo.xml NotFound"
&amp;nbsp;&amp;nbsp;&amp;nbsp; get-gpo -all | Export-Clixml $workpath\origpo.xml
&amp;nbsp;&amp;nbsp;&amp;nbsp; return
}

if (test-path "$workpath\orilink.xml"){
&amp;nbsp;&amp;nbsp;&amp;nbsp; $orilink=Import-Clixml "$workpath\orilink.xml"
} else {
&amp;nbsp;&amp;nbsp;&amp;nbsp; "orilink.xml NotFound"
&amp;nbsp;&amp;nbsp;&amp;nbsp; Get-ADOrganizationalUnit -Filter 'Name -like "*"' | % { Get-GPInheritance -Target $_ } | ? { $_.gpolinks -ne "" } | % { $_.path; $_.gpolinks } | Export-Clixml $workpath\orilink.xml
&amp;nbsp;&amp;nbsp;&amp;nbsp; return
}


#現在のOU状態の取得
$crlink = Get-ADOrganizationalUnit -Filter 'Name -like "*"' | % { Get-GPInheritance -Target $_ } | ? { $_.gpolinks -ne "" } | % { $_.path; $_.gpolinks }
$crgpo = get-gpo -all


#比較対象を関数で渡し、戻り値が存在した場合にはメールを出す
$result=comparegpo $crlink $orilink $crgpo $origpo

if ($result) { 
&amp;nbsp;&amp;nbsp;&amp;nbsp; $mailbody=[string]::join("`r`n", ($result | out-string -width 200 ))
&amp;nbsp;&amp;nbsp;&amp;nbsp; $mailer.send($mailfrom, $mailto, $mailsubject, $mailbody )
&amp;nbsp;&amp;nbsp;&amp;nbsp; $result | out-string -width 200 &amp;gt; $workpath\recent.log
&amp;nbsp;&amp;nbsp;&amp;nbsp; $result
&amp;nbsp;&amp;nbsp;&amp;nbsp; "変更が発生し、メールを出しました"
}
&lt;/pre&gt;$work フォルダの配下にlog フォルダと、 gpbackupフォルダを用意してください。&lt;br /&gt;
適当にGPOを変更かけて、リンクをつけたあとにスクリプトを実行してみました。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zYZ64MvBrL0/TAPRdKIv46I/AAAAAAAAA2s/d-ffJ5Ee3t4/s1600/a.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/_zYZ64MvBrL0/TAPRdKIv46I/AAAAAAAAA2s/d-ffJ5Ee3t4/s640/a.jpg" width="638" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
あとはこのスクリプトを一定時間のタスクで回しておけば、&lt;br /&gt;
多少の監視にはなるかなぁと。&lt;br /&gt;
&lt;br /&gt;
結局、サイトのGPOは対応できなかったけどなッッ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-4350938851740309567?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/iMzqi5Uosgo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/4350938851740309567/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2010/06/blog-post.html#comment-form" title="1 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/4350938851740309567?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/4350938851740309567?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/iMzqi5Uosgo/blog-post.html" title="サーバのグループポリシーのリンク監視の方法を模索してみる その３" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_zYZ64MvBrL0/TAPNExFShAI/AAAAAAAAA2U/k2B6wZ_FVI4/s72-c/36.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2010/06/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEBRXw8cCp7ImA9WxFXF0w.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-6195781771312633555</id><published>2010-05-25T00:07:00.000+09:00</published><updated>2010-05-25T00:07:34.278+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-25T00:07:34.278+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ネットワーク" /><title>IPv6を勉強する</title><content type="html">IPv6アドレス。&lt;br /&gt;
Vistaのころも多少は浸透していましたが、&lt;br /&gt;
７になってからもはや標準となりつつあり、v4の頃と勝手が違ってきているので少し勉強してみたいと思います。&lt;br /&gt;
（Windowsの電卓で　表示を「プログラマ」にすると値の計算なり色々やりやすいです）&lt;br /&gt;
&lt;br /&gt;
IPv4と比較しつつ、違いをみてみる。&lt;br /&gt;
&lt;br /&gt;
・アドレス表記 &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zYZ64MvBrL0/S_qSeguTydI/AAAAAAAAA0w/JiZowF03nv4/s1600/35.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S_qSeguTydI/AAAAAAAAA0w/JiZowF03nv4/s640/35.jpg" width="376" /&gt;&lt;/a&gt;&lt;/div&gt;16進表記のほうが、10進より確かに把握しやすいやも。&lt;br /&gt;
とりあえず、16ビットずつ：で区切られ、1桁は4ビット分として16進表記で表されているというのを&lt;br /&gt;
覚えておこぉ&lt;br /&gt;
&lt;br /&gt;
その他にもv4でいうところのプライベートアドレスやら、&lt;br /&gt;
v4との互換性も見ていかないといけないですね。　それはまた次回以降ということで。&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'MS PGothic'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 15px; line-height: 22px;"&gt;&lt;code style="background-color: #f9f9f9;"&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-6195781771312633555?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/b3cbJ4OxANo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/6195781771312633555/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2010/05/ipv6.html#comment-form" title="2 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/6195781771312633555?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/6195781771312633555?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/b3cbJ4OxANo/ipv6.html" title="IPv6を勉強する" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_zYZ64MvBrL0/S_qSeguTydI/AAAAAAAAA0w/JiZowF03nv4/s72-c/35.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2010/05/ipv6.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMDQnk7eip7ImA9WxFXFk8.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-2592222435639756761</id><published>2010-05-24T00:27:00.000+09:00</published><updated>2010-05-24T00:27:53.702+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-24T00:27:53.702+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ActiveDirectory" /><category scheme="http://www.blogger.com/atom/ns#" term="グループポリシー" /><category scheme="http://www.blogger.com/atom/ns#" term="Powershell" /><title>サーバのグループポリシーのリンク監視の方法を模索してみる その２</title><content type="html">&lt;a href="http://win-enikki.blogspot.com/2010/05/blog-post.html"&gt;前回の続き&lt;/a&gt;。&lt;br /&gt;
前回は、OUのリストを取得し、そこに貼られているGPOを出力するということをやりました。&lt;br /&gt;
で、OUに貼られているGPOはとれてもサイトに貼られたGPOはとれないね、というところまでやりました。&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;・・・まぁ、サイトに関するGPOはとりあえずおいとく（笑）&lt;/span&gt;&lt;br /&gt;
できるところを固め、そこから順次付け足すというのが　僕の今ままでの手法なので&lt;br /&gt;
とりあえずできそうなところからやってみます。&lt;br /&gt;
ということで、オリジナルGPOと変更したGPOを比較する手法を今回はやってみます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh3.ggpht.com/_zYZ64MvBrL0/S_k8Qxs6E7I/AAAAAAAAAz8/CAb8LZAO80E/34.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh3.ggpht.com/_zYZ64MvBrL0/S_k8Qxs6E7I/AAAAAAAAAz8/CAb8LZAO80E/34.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
前回はリンクに関することしか触れませんでしたが、&lt;br /&gt;
PowerShell v2 のgrouppolicy モジュールにはGet-GPO というGPO情報を取得できるコマンドがあります。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;blockquote&gt;PS &amp;gt; Import-Module grouppolicy&lt;br /&gt;
PS &amp;gt; get-gpo -all&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_zYZ64MvBrL0/S_k0oMzDXPI/AAAAAAAAAz0/78JrxXhjYj8/s1600/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://3.bp.blogspot.com/_zYZ64MvBrL0/S_k0oMzDXPI/AAAAAAAAAz0/78JrxXhjYj8/s640/1.jpg" width="544" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&amp;nbsp;-All オプションをつけることで、すべてのGPOの情報を取得できます。&lt;br /&gt;
情報としては、Statusや、変更時刻などが記されているので、この情報を保存します。&lt;br /&gt;
PowerShellだとオブジェクトはXMLファイルとして保存できるので、それを利用してみます。&lt;br /&gt;
&lt;blockquote&gt;PS &amp;gt; Get-GPO -All | Export-Clixml -Path .\origpo.xml&lt;/blockquote&gt;では、試しにGPOを変更して、比較してみましょう。&lt;br /&gt;
↓が現在のGPO &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zYZ64MvBrL0/S_lELLjgMFI/AAAAAAAAA0Y/QextLggmcVo/s1600/2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="262" src="http://4.bp.blogspot.com/_zYZ64MvBrL0/S_lELLjgMFI/AAAAAAAAA0Y/QextLggmcVo/s400/2.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
GPOtest1を内容変更、GPOtest2を「すべての状態を無効」 GPOtest4を削除してみます。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zYZ64MvBrL0/S_lFNrNIk8I/AAAAAAAAA0g/n6bchYV63ns/s1600/3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="171" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S_lFNrNIk8I/AAAAAAAAA0g/n6bchYV63ns/s640/3.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
では、さっき保存したorigpo.xml と現在のGPOを比較してみます。&lt;br /&gt;
&lt;blockquote&gt;PS &amp;gt; $origpo=Import-Clixml .\origpo.xml&lt;br /&gt;
PS &amp;gt; $crgpo=Get-GPO -All&lt;br /&gt;
&lt;br /&gt;
PS &amp;gt; Compare-Object $crgpo $origpo -Property displayname,modificationtime,GpoStatus | sort displayname&lt;/blockquote&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zYZ64MvBrL0/S_lHZBXeYEI/AAAAAAAAA0o/B4rb2e4Gsk8/s1600/4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S_lHZBXeYEI/AAAAAAAAA0o/B4rb2e4Gsk8/s640/4.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
表示名、変更時刻、ステータスを比較対象として出力してみました。 &lt;br /&gt;
ちゃんと、変更された、削除されたGPOが出力されていますねー。&lt;br /&gt;
これを定期的に実行、タスクに組み込むことで変更に対する監視ができるのではないでしょうか。&lt;br /&gt;
前回のOUリンクも同じ方法でオブジェクトを保存し、リンクの比較をしてみるとよいかもですね。&lt;br /&gt;
&lt;br /&gt;
・・でも、サイトのやりかたはやっぱりわからんｗ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-2592222435639756761?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/Wsjglv9VO94" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/2592222435639756761/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2010/05/blog-post_24.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/2592222435639756761?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/2592222435639756761?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/Wsjglv9VO94/blog-post_24.html" title="サーバのグループポリシーのリンク監視の方法を模索してみる その２" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_zYZ64MvBrL0/S_k8Qxs6E7I/AAAAAAAAAz8/CAb8LZAO80E/s72-c/34.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2010/05/blog-post_24.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8NQH4yeip7ImA9WxFXE0s.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-5121983561945152383</id><published>2010-05-19T00:00:00.006+09:00</published><updated>2010-05-21T00:04:51.092+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-21T00:04:51.092+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ActiveDirectory" /><category scheme="http://www.blogger.com/atom/ns#" term="グループポリシー" /><category scheme="http://www.blogger.com/atom/ns#" term="Powershell" /><title>サーバのグループポリシーのリンク監視の方法を模索してみる</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh3.ggpht.com/_zYZ64MvBrL0/S_Kjq7y1PhI/AAAAAAAAAyE/_juUm-WK-FE/31.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh3.ggpht.com/_zYZ64MvBrL0/S_Kjq7y1PhI/AAAAAAAAAyE/_juUm-WK-FE/31.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
さて、久々の更新です。&lt;br /&gt;
独りよがりで描かず、今後は定義を再確認しつつ&lt;br /&gt;
わかりやすく絵で表現していこうかなーと思っていたのですが、&lt;br /&gt;
少し作ってみたいPowerShellのスクリプトができたので、&lt;br /&gt;
やっぱり今回もPowerShellのメモ描きですｗ&lt;br /&gt;
&lt;br /&gt;
その作ってみたいスクリプトとは・・&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh3.ggpht.com/_zYZ64MvBrL0/S_KpIjoSluI/AAAAAAAAAyg/yfw73XQJMEU/32.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh3.ggpht.com/_zYZ64MvBrL0/S_KpIjoSluI/AAAAAAAAAyg/yfw73XQJMEU/32.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
他に良い案があればみなさんに教えてもらうとして・・(笑)&lt;br /&gt;
とりあえず、泥臭い手段でPowerShellを使って模索してみます。&lt;br /&gt;
&lt;br /&gt;
PowerShell v2 になってからADに関するモジュールが追加されたので、それを利用してみましょう。&lt;br /&gt;
とりあえず、ActiveDirectory と、GroupPolicy のモジュールを追加してみる。&lt;br /&gt;
&lt;blockquote style="color: black;"&gt;&lt;span style="font-size: small;"&gt;PS &amp;gt; Import-Module activedirectory&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;PS &amp;gt; Import-Module grouppolicy&lt;/span&gt;&lt;/blockquote&gt;これにより、ADやグループポリシーに関するコマンドを使用することができます。&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;PS&amp;gt; Get-Command -module activedirectory&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;CommandType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Definition&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;-----------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ----&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ----------&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Cmdlet&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Add-ADComputerServiceAccount&amp;nbsp;&amp;nbsp;&amp;nbsp; Add-ADComputerServiceAccount...&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Cmdlet&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Add-ADDomainControllerPasswo... Add-ADDomainControllerPasswo...&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Cmdlet&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Add-ADFineGrainedPasswordPol... Add-ADFineGrainedPasswordPol...&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Cmdlet&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Add-ADGroupMember&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Add-ADGroupMember [-Identity...&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Cmdlet&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Add-ADPrincipalGroupMembership&amp;nbsp; Add-ADPrincipalGroupMembersh...&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;：&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;PS &amp;gt; Get-Command -module grouppolicy&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;CommandType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Definition&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;-----------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ----&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ----------&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Cmdlet&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Backup-GPO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Backup-GPO -Guid &lt;guid&gt; -Pat...&lt;br /&gt;
Cmdlet&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Copy-GPO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Copy-GPO -SourceGuid &lt;guid&gt; ...&lt;br /&gt;
Cmdlet&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get-GPInheritance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get-GPInheritance [-Target] ...&lt;br /&gt;
Cmdlet&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get-GPO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get-GPO [-Guid] &lt;guid&gt; [[-Do...&lt;br /&gt;
Cmdlet&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get-GPOReport&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get-GPOReport [-Guid] &lt;guid&gt;...&lt;/guid&gt;&lt;/guid&gt;&lt;/guid&gt;&lt;/guid&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;さて、では例として下記のようにGPOがリンクされていた場合。&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh6.ggpht.com/_zYZ64MvBrL0/S_KQGgGhwzI/AAAAAAAAAxk/3e8Dtkjl9zE/busoserver%20-%20%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%20%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E6%8E%A5%E7%B6%9A%2020100518%20220509.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh6.ggpht.com/_zYZ64MvBrL0/S_KQGgGhwzI/AAAAAAAAAxk/3e8Dtkjl9zE/busoserver%20-%20%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%20%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E6%8E%A5%E7%B6%9A%2020100518%20220509.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
GPOのリンクが何がついているかを見るには、　Get-GPInheritance　コマンドレットを使います。&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;PS&amp;gt; Get-GPInheritance -target　"OU=GroupA,OU=UserList,DC=furyu,DC=local"&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : groupa&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;ContainerType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : OU&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Path&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : ou=groupa,ou=userlist,dc=furyu,dc=local&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;GpoInheritanceBlocked : No&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;GpoLinks&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : {GPOtest1, GPOtest2}&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;InheritedGpoLinks&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : {GPOtest1, GPOtest2, Default Domain Policy}&lt;/span&gt;&lt;/blockquote&gt;&amp;nbsp;ちょっとこれだけだとわかりづらいから、 GpoLinks だけを取り出してみる。&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;PS &amp;gt; Get-GPInheritance -target "OU=GroupA,OU=UserList,DC=furyu,DC=local" | % { $_.gpolinks }&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;GpoId&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 09ecc96a-2d91-4594-8474-4404e82241d2&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;DisplayName : GPOtest1&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Enabled&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : True&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Enforced&amp;nbsp;&amp;nbsp;&amp;nbsp; : False&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Target&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : ou=groupa,ou=userlist,dc=furyu,dc=local&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Order&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 1&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;GpoId&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 72e4f0a0-7b01-4944-9fba-6ad14faefb49&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;DisplayName : GPOtest2&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Enabled&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : True&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Enforced&amp;nbsp;&amp;nbsp;&amp;nbsp; : False&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Target&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : ou=groupa,ou=userlist,dc=furyu,dc=local&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Order&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 2&lt;/span&gt;&lt;/blockquote&gt;これで、　OUが "OU=GroupA,OU=UserList,DC=furyu,DC=local" のかかっているリンクのGPOをとりだすことができました。&lt;br /&gt;
しかし、監視するとなると全OUのリンク状況を知らないといけないですよね。&lt;br /&gt;
というわけで、全OUを列挙してみましょう。&lt;br /&gt;
OUを出すには、ActiveDirectoryモジュールを追加してできた、Get-ADOrganizationalUnit　コマンドレットを使います。&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;PS &amp;gt; Get-ADOrganizationalUnit -Filter 'Name -like "*"'&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;City&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Country&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;DistinguishedName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : OU=Domain Controllers,DC=furyu,DC=local&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;LinkedGroupPolicyObjects : {CN={6AC1786C-016F-11D2-945F-00C04fB984F9},CN=Polici&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; es,CN=System,DC=furyu,DC=local}&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;ManagedBy&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Domain Controllers&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;ObjectClass&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : organizationalUnit&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;ObjectGUID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : ee6dfe99-a1f5-4579-b810-d12d22fcdfff&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;PostalCode&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;State&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;StreetAddress&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;：&lt;/span&gt;&lt;/blockquote&gt;&amp;nbsp;これで全OUを取り出せるので、このオブジェクト群を変数にいれてしまいます。&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;PS &amp;gt; $oulist=Get-ADOrganizationalUnit -Filter 'Name -like "*"'&lt;/span&gt;&lt;/blockquote&gt;&amp;nbsp;では、この変数を利用してリンクが貼られているOUとそのGPOを出してみましょう。&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;PS &amp;gt; $oulist | % { Get-GPInheritance -target $_ } | ? { $_.gpolinks -ne "" } | fl -Property path,gpolinks&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Path&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : ou=domain controllers,dc=furyu,dc=local&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;GpoLinks : {Default Domain Controllers Policy}&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Path&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : ou=groupa,ou=userlist,dc=furyu,dc=local&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;GpoLinks : {GPOtest1, GPOtest2}&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Path&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : ou=groupb,ou=userlist,dc=furyu,dc=local&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;GpoLinks : {GPOtest2, GPOtest3, GPOtest1, GPOtest4} &lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
あとは、このオリジナルのリストと、取得したリストを比較するスクリプトを定期的にタスクで流して差異がでたら報告、みたいな作りをさせればなぁと思ったのですが。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh4.ggpht.com/_zYZ64MvBrL0/S_KrXw0mJjI/AAAAAAAAAyk/0PQRu0lxepA/33.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh4.ggpht.com/_zYZ64MvBrL0/S_KrXw0mJjI/AAAAAAAAAyk/0PQRu0lxepA/33.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
そんなわけで、もう少しやり方考えなきゃなぁと思ってます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-5121983561945152383?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/bnfBIWKdJV0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/5121983561945152383/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2010/05/blog-post.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/5121983561945152383?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/5121983561945152383?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/bnfBIWKdJV0/blog-post.html" title="サーバのグループポリシーのリンク監視の方法を模索してみる" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_zYZ64MvBrL0/S_Kjq7y1PhI/AAAAAAAAAyE/_juUm-WK-FE/s72-c/31.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2010/05/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcAR30zcCp7ImA9WxFSE0k.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-7714368385170834065</id><published>2010-04-16T00:07:00.000+09:00</published><updated>2010-04-16T00:07:26.388+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-16T00:07:26.388+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ActiveDirectory" /><category scheme="http://www.blogger.com/atom/ns#" term="グループポリシー" /><category scheme="http://www.blogger.com/atom/ns#" term="設定" /><title>クラシック表示のシェルをオンにする</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh3.ggpht.com/_zYZ64MvBrL0/S8clrm41ZqI/AAAAAAAAAtU/yQjfVI2GpNA/30.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh3.ggpht.com/_zYZ64MvBrL0/S8clrm41ZqI/AAAAAAAAAtU/yQjfVI2GpNA/30.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
この時期はリプレースがあったりして、当然７も新たにドメインに参加することになったりしてます。&lt;br /&gt;
で、今回発覚したのがGPOの「クラッシック表示のシェルをオンにする」の機能変更。&lt;br /&gt;
&lt;br /&gt;
このポリシー自体は、エクスプローラをクラッシック表示に切り替え、&lt;br /&gt;
エクスプローラーの処理の負担や消費メモリ量の軽減させ軽快な動作をはかることができるのですが。。&lt;br /&gt;
&lt;br /&gt;
しかし、今までは「有効」にすることで強制的にダブルクリックになっていたのに&lt;br /&gt;
７からは「有効」にするとシングルクリックが適用されるという・・。ひどいッッ&lt;br /&gt;
混在している環境だったらどうやって統一させろというんだろう・・。&lt;br /&gt;
&lt;br /&gt;
ちなみに、フォルダオプションを見ても見た目上は「ダブルクリックで開く」になってます。&lt;br /&gt;
とりあえず、現状適用されているかどうかを見る場合は、レジストリを見るとてっとり早いです。&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-size: x-small;"&gt;HKEY_CURRE&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style="font-size: x-small;"&gt;NT_USER\So&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style="font-size: x-small;"&gt;ftware\Mic&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style="font-size: x-small;"&gt;rosoft\Win&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style="font-size: x-small;"&gt;dows\CurrentVer&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style="font-size: x-small;"&gt;sion\Polic&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style="font-size: x-small;"&gt;ies\Explor&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style="font-size: x-small;"&gt;er&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Clas&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style="font-size: x-small;"&gt;sicShell 　DWORD値&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
クラッシック表示のシェルに関してはこちらのブログで詳しく紹介されていますので、どうぞ。&lt;br /&gt;
attosoft.info Blog&lt;br /&gt;
&lt;a href="http://attosoft.info/blog/win-accel/item-useclassicshell/"&gt;http://attosoft.info/blog/win-accel/item-useclassicshell/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-7714368385170834065?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/bjk2UURifsE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/7714368385170834065/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2010/04/blog-post_16.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/7714368385170834065?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/7714368385170834065?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/bjk2UURifsE/blog-post_16.html" title="クラシック表示のシェルをオンにする" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_zYZ64MvBrL0/S8clrm41ZqI/AAAAAAAAAtU/yQjfVI2GpNA/s72-c/30.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2010/04/blog-post_16.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcESH45eip7ImA9WxFTE0U.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-1975669400565072527</id><published>2010-04-04T21:10:00.000+09:00</published><updated>2010-04-04T21:10:09.022+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-04T21:10:09.022+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Powershell" /><title>タスクスケジューラ設定</title><content type="html">4月1日、エイプリルフール。&lt;br /&gt;
円谷プロでは毎年手のこんだサイトを作りあげるが、&lt;br /&gt;
今年はTwitterの模倣、円谷ッターをやっていた。&lt;br /&gt;
円谷ッター（跡地）&lt;br /&gt;
http://tsubutter.m-78.jp/&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh3.ggpht.com/_zYZ64MvBrL0/S7h8UMq-G7I/AAAAAAAAArA/z2qmK6lmni0/29.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh3.ggpht.com/_zYZ64MvBrL0/S7h8UMq-G7I/AAAAAAAAArA/z2qmK6lmni0/29.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
ウルトラ兄弟と怪獣達が円谷ッターを使って、&lt;br /&gt;
4月1日終日ずーっとつぶやいていた。&lt;br /&gt;
0時から23時までほぼずっと誰かがつぶやいていたけれど、&lt;br /&gt;
流石に社員がずっと張り付いていたわけではあるまい。&lt;br /&gt;
（ゴモたんは別だろうけれどもｗ）&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;先週ツギハギで作ったTwitterスクリプトを利用しつつ、&lt;br /&gt;
Twitterのタスクスケジュールつぶやきができないかなぁと考えたが・・&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;簡単にできると思ったが、思った以上に苦労&lt;/span&gt;。&lt;br /&gt;
&lt;br /&gt;
まず、Windowsのタスク処理を見なければなるまい。&lt;br /&gt;
Vista,2008Serverからタスクスケジューラの機能が大きく変わった。&lt;br /&gt;
「&lt;a href="http://itpro.nikkeibp.co.jp/article/COLUMN/20081216/321533/?ST=win-server"&gt;IT Prp：　大幅に強化されたWindows Server 2008のタスク・スケジューラ&lt;/a&gt;」&lt;br /&gt;
フォルダを作成し、タスクを管理するライブラリ機能もつき管理しやすくなったようだ。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
それを踏まえた上で、この記事を参照してみよう。&lt;br /&gt;
「&lt;a href="http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/apr09/hey0401.mspx"&gt;Hey, Scripting Guy!：　タスク スケジューラを使って効率的に作業する方法はありますか&lt;/a&gt;」&lt;br /&gt;
PowerShellを利用したタスク管理のスクリプトである。&lt;br /&gt;
上記のスクリプトを使って、「Twitter」ライブラリを作ってみる。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh4.ggpht.com/_zYZ64MvBrL0/S7bakgTTz3I/AAAAAAAAAp8/aBvp1bZ9wr4/%E3%82%BF%E3%82%B9%E3%82%AF%20%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%A9%2020100403%20150607.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://lh4.ggpht.com/_zYZ64MvBrL0/S7bakgTTz3I/AAAAAAAAAp8/aBvp1bZ9wr4/%E3%82%BF%E3%82%B9%E3%82%AF%20%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%A9%2020100403%20150607.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;デフォルトのタスクスケジューラ&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: left;"&gt;&amp;nbsp;. .\taskps.ps1&lt;br /&gt;
New-TaskFolder -folder (New-TaskObject) -path "\twitter"&lt;br /&gt;
&lt;br /&gt;
Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Path&lt;br /&gt;
----&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ----&lt;br /&gt;
twitter&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \twitter&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh6.ggpht.com/_zYZ64MvBrL0/S7bcZAObtcI/AAAAAAAAAqg/sst7z9zHYSE/%E3%82%BF%E3%82%B9%E3%82%AF%20%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%A9%2020100403%20151351.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh6.ggpht.com/_zYZ64MvBrL0/S7bcZAObtcI/AAAAAAAAAqg/sst7z9zHYSE/%E3%82%BF%E3%82%B9%E3%82%AF%20%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%A9%2020100403%20151351.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Twitterフォルダが作成された。&lt;/div&gt;&lt;br /&gt;
続いて、タスクの登録に関しては以下の記事。&lt;br /&gt;
「&lt;a href="http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/mar09/hey0330.mspx"&gt;Hey, Scripting Guy!：　スケジュールされたタスクを複数のコンピューター上に作成する方法はありますか&lt;/a&gt;」 &lt;br /&gt;
&lt;br /&gt;
と、上記を参考にしながら昨日ガシガシ作ったのだけど、&lt;br /&gt;
特殊なことをせず、素直にATコマンドを使えば良かったような気がする・・。&lt;br /&gt;
あらかじめ未来のつぶやきを設定して「おえかき　うぃる」とつぶやきたかったのです。。&lt;br /&gt;
完成したにはしたけれど、ちょっと微妙な感じなので今回はコード公開は見送り。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-1975669400565072527?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/UUMPSUucyrg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/1975669400565072527/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2010/04/blog-post.html#comment-form" title="4 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/1975669400565072527?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/1975669400565072527?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/UUMPSUucyrg/blog-post.html" title="タスクスケジューラ設定" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_zYZ64MvBrL0/S7h8UMq-G7I/AAAAAAAAArA/z2qmK6lmni0/s72-c/29.jpg" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2010/04/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQMR38-fip7ImA9WxBaF0g.&quot;"><id>tag:blogger.com,1999:blog-7807390895848534395.post-7614422317498673791</id><published>2010-03-28T12:54:00.006+09:00</published><updated>2010-03-28T13:59:46.156+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-28T13:59:46.156+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="サイト紹介" /><category scheme="http://www.blogger.com/atom/ns#" term="Powershell" /><title>PowerShellでTwitter投稿</title><content type="html">こんな記事を見た。&lt;a href="http://d.hatena.ne.jp/daigaku-syokuin/20100326/p1" name="p1"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
twitter で大学のネットワークを監視　[これでも大学職員のブログ -情報センター勤務中-]&lt;br /&gt;
&lt;a href="http://d.hatena.ne.jp/daigaku-syokuin/20100326/p1"&gt;http://d.hatena.ne.jp/daigaku-syokuin/20100326/p1&lt;/a&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh4.ggpht.com/_zYZ64MvBrL0/S67IeeXEp4I/AAAAAAAAAoc/j-oah_n4DsI/28.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh4.ggpht.com/_zYZ64MvBrL0/S67IeeXEp4I/AAAAAAAAAoc/j-oah_n4DsI/28.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
と、いうわけで探してみました。&lt;br /&gt;
やはりPowerShell経由でTwitter投稿するスクリプトを作っている方がいました。&lt;br /&gt;
&lt;br /&gt;
SAPIEN Technologies&lt;br /&gt;
&lt;a href="http://blog.sapien.com/index.php/2008/06/23/out-twitter/"&gt;http://blog.sapien.com/index.php/2008/06/23/out-twitter/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Mike Ormond's Blog&lt;br /&gt;
&lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/01/30/updated-twitter-powershell-script.aspx"&gt;http://blogs.msdn.com/mikeormond/archive/2009/01/30/updated-twitter-powershell-script.aspx&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
素晴らしい。で、二つのスクリプトの良いとこ取りをしてくっつけてみた。&lt;br /&gt;
以下をFixtwit.ps1 として保存してください。&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-size: x-small;"&gt;Function Out-Twitter {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; BEGIN {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #check for global Twitter credential&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!$global:Twitter_Credential) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $global:Twitter_Credential=Get-Credential&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; PROCESS { &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #turn off error pipeline&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $erroractionpreference="SilentlyContinue"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [string]$tweet=$_&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ##Twitter投稿関数&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function SubmitWebRequest(&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [string] $RequestUrl, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [string] $RequestMethod, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [string] $RequestContentType, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [string] $PostString, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [string] $Username, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [string] $Password&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [System.Net.ServicePointManager]::Expect100Continue = $false&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $request = [System.Net.WebRequest]::Create($RequestUrl)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($Username) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $request.Credentials = new-object System.Net.NetworkCredential($Username, $Password)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $request.Method = $RequestMethod&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($RequestMethod -ieq "POST") {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $request.ContentType = $RequestContentType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $formdata = [System.Text.Encoding]::UTF8.GetBytes($PostString)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $request.ContentLength = $formdata.Length&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $requestStream = $request.GetRequestStream()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $requestStream.Write($formdata, 0, $formdata.Length)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $requestStream.Close()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $response = $request.GetResponse()&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $reader = new-object System.IO.StreamReader($response.GetResponseStream())&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $returnvalue = $reader.ReadToEnd()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $reader.Close()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $returnvalue&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } #end function&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Short Url&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Function Get-Snurl {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Param([string]$link="http://www.google.com")&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $tinyurlrequest = "http://tinyurl.com/api-create.php?url=$link"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write-progress "Tweeting" "Getting tiny URL" -cu $tinyurlrequest&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $tinyurl = SubmitWebRequest $tinyurlrequest "GET"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write-debug "Tweeting - Received tiny URL Response: $($tinyurl)"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write $tinyurl&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #search for web links using Regex&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [regex]$regex="(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;amp;:/~\+#]*[\w\-\@?^=%&amp;amp;/~\+#])?"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If ($tweet -match $regex) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $link=$matches[0]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #if an embedded url was found, convert it to a snurl link&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($link) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $snurl=Get-Snurl $link&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $tweet=$tweet.Replace($link,$snurl)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($tweet.Length -gt 140) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Warning ("Your message is " + (($tweet.length)-140)&amp;nbsp; + " characters too long.")&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $clear=$True&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $tweetstring = [String]::Format("status={0}", $tweet)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $request = [Net.WebRequest]::Create($url)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $twitusername=$global:Twitter_Credential.GetNetworkCredential().Username&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $twitpassword=$global:Twitter_Credential.GetNetworkCredential().Password&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $twitResponseText = SubmitWebRequest `&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "http://twitter.com/statuses/update.xml" `&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "POST" `&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "application/x-www-form-urlencoded" `&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $tweetstring `&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $twitusername `&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $twitpassword&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write-debug "Tweeting - Posted status update. Response: $($twitResponseText)"&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; END {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #if there was an error, then don't keep the global Twitter &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #credential&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($clear) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Remove-Variable Twitter_Credential -scope Global&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
} #end Function&lt;/span&gt;&lt;/blockquote&gt;&amp;nbsp;じゃば、使ってみる。&lt;br /&gt;
&lt;blockquote&gt;PS 2010/03/28 12:23&amp;gt; . .\fixtwit.ps1&lt;br /&gt;
PS 2010/03/28 12:24&amp;gt; "もう昼・・お腹すいた・・" | Out-Twitter&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;fixtwit.ps1 をドット化して実行。 &lt;br /&gt;
つぶやきたい言葉をはいて、パイプを通し　Out-Twitter　を実行。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh4.ggpht.com/_zYZ64MvBrL0/S67MIDR1AwI/AAAAAAAAAns/LBbGqRApjv8/Windows%20PowerShell%20%E8%B3%87%E6%A0%BC%E6%83%85%E5%A0%B1%E3%81%AE%E8%A6%81%E6%B1%82%20%2020100328%20122613.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="201" src="http://lh4.ggpht.com/_zYZ64MvBrL0/S67MIDR1AwI/AAAAAAAAAns/LBbGqRApjv8/Windows%20PowerShell%20%E8%B3%87%E6%A0%BC%E6%83%85%E5%A0%B1%E3%81%AE%E8%A6%81%E6%B1%82%20%2020100328%20122613.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;実行すると資格情報を聞かれるので、&lt;br /&gt;
Twitterのアカウントとパスワードを入力する。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_zYZ64MvBrL0/S67MLKe-bMI/AAAAAAAAAnw/CXdbc5g145o/%E7%AE%A1%E7%90%86%E8%80%85%20CWindowssystem32cmd.exe%20-%20powershell%2020100328%20122626.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="110" src="http://lh5.ggpht.com/_zYZ64MvBrL0/S67MLKe-bMI/AAAAAAAAAnw/CXdbc5g145o/%E7%AE%A1%E7%90%86%E8%80%85%20CWindowssystem32cmd.exe%20-%20powershell%2020100328%20122626.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
入力すると処理が走り、投稿完了。&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_zYZ64MvBrL0/S67MS7Ov4OI/AAAAAAAAAoQ/9PTSki2XocE/buso%20%28busobuso%29%20on%20Twitter%20-%20Mozilla%20Firefox%2020100328%20122656.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="217" src="http://lh5.ggpht.com/_zYZ64MvBrL0/S67MS7Ov4OI/AAAAAAAAAoQ/9PTSki2XocE/buso%20%28busobuso%29%20on%20Twitter%20-%20Mozilla%20Firefox%2020100328%20122656.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
投稿されていることが確認できた。&lt;br /&gt;
&lt;strike&gt;URL短縮もされるはずなんだけど、うまく行く時と行かないときがあるような。。&lt;/strike&gt;&lt;br /&gt;
&lt;strike&gt;なんでだろう。&lt;/strike&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;↑修正しました。&lt;br /&gt;
&lt;br /&gt;
あくまでツギハギなので本家のスクリプトを見に行ってください。&lt;br /&gt;
これをPowerShellのバックグラウンド処理を使えば監視っぽいことはできるかもですね。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7807390895848534395-7614422317498673791?l=win-enikki.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/tqez/~4/4Pr9TiUhodU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://win-enikki.blogspot.com/feeds/7614422317498673791/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://win-enikki.blogspot.com/2010/03/powershelltwitter.html#comment-form" title="2 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/7614422317498673791?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7807390895848534395/posts/default/7614422317498673791?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/tqez/~3/4Pr9TiUhodU/powershelltwitter.html" title="PowerShellでTwitter投稿" /><author><name>buso</name><uri>http://www.blogger.com/profile/07696260364319885151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_zYZ64MvBrL0/S3_9a62hMLI/AAAAAAAAAKo/PBLA3dxt57U/S220/tw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_zYZ64MvBrL0/S67IeeXEp4I/AAAAAAAAAoc/j-oah_n4DsI/s72-c/28.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://win-enikki.blogspot.com/2010/03/powershelltwitter.html</feedburner:origLink></entry></feed>

