Windows」カテゴリーアーカイブ

Powershellのタスク起動がうまく行かない

最近、あれこれとVBScriptを使って幾つかの作業を簡易にしようとあれこれしています。
VBSに関しては、そんなに勉強しなくても誰でも読む事が出来るので簡単に引き継げるし、
昔からそれほど変わっていないのでWindows端末であればサーバー/クライアント問わず
だいたい動きます。

ただ、やはり出来る事に限界があるのと、ファイルを分割する事が出来ないので
モジュールの再利用がコピペになってしまうんですよね。
まぁ、その辺りは割り切りなのかもしれませんが。

そこで、最近のOSであればだいたい動くPowershellなのですが。。。
タスクから実行した場合にうまく動いてくれません。
もちろん、手動で起動する分にはExecutionPolicyを変更しているので問題ないのですが、
タスクスケジューラーから実行すると、一瞬Powershellのウィンドウが出て何もせずに消えてしまいます。

ネットを探してみても、それほど話題になってないので単純に何かを見落としているだけだとは思うんだけど・・・
なんだろ

Windows Server 2012R2 を VirtualBoxへ

先日、MicrosoftのイベントでしこたまWindows Server 2012 R2 の説明を受けてきたので、
未だにWindows 8.1 を試していないにもかかわらず先に 2012 R2 を入れてみることにした。

家の環境で仮想環境は VirtualBox を使っている。
どうせなら、Azure 上で試してみるという手もなくはないんだけど
なんとなく。
うん、そのうち Azure にも手を出してみたいとは思うんだけどね。

 

いきなりエラー。
一瞬、金魚みたいな絵が出てきていったかと思いきやダメだった。

 

この時のバージョンは上記の通り4.1.23。選択できるOSはWindows8まで。
長らく更新をサボっていたようで、4.2.16と言うのが最新でした。

更新すると、OSの選択肢として2012が出てくる(当然 R2 は出てこないが)
と言う訳で、VirtualBox を更新してやってみると

 

ちゃんと進むことが出来た。

現在の 2012 R2 Preview 版では、インストールすることが出来るエディションは Datacenter のみとなる。
このエディション。名前が仰々しくてこれまで使ったことが無かったんだけどどうなんだろう。

Microsoftとしては、Azure や Cloud を全面に押し出している事からDataCenterエディションのみになったのかもしれないけどなぁ。

 

無事サーバーマネージャーまで。

ここで気がつく。この画面、そういえば直に見るのははじめてだ。
そう、実はそもそも Server 2012 をいじっていなかったのでした。

仕事であれこれ Windows Server は使うのですが、Oracle がまだ Server 2012 に対応してくれておらず、検証すらしていない有様。
うーん、そうこうしているうちに次のOSが出てきてしまった。。。

Oracle はおいておいて、最新OSの考え方って奴は触れておく事にしよう。

———————

余談
眠気眼をこすりながら、8.1も入れてみた。

Surface Pro

日本でのSurface Pro発売のアナウンス。
ついに出ましたね。
しかも、Officeも付いてくる。

値段がやはり10万となると、どうしても二の足を踏んでしまいますが、
出来の良さ以上に持ってみたいという好奇心がうずきます。

しかし、Proはタブレットとしても使えるPCという位置づけ。
利用想定としてはノートPCに近いものになるとすると、私が日常で使うとなると
幾つか考え込んでしまいます。

  • 通勤で使うとすると、ノートPCのように膝に置いてキーボードを叩くような使い方はカバー型のキーボードでは難しいのでは?
  • ネットに繋げるには、別途ポケットWifiなりを契約する必要がある。テザリングしたい。。。。
  • ネットに繋がらないとすると、よさが半減してしまわないだろうか?
  • バッテリーの持ちが4時間と表記されているから、実際にはもう少し短いのでは

ううむ。

ネットに関しては、まぁiPhoneも持っているので単体で見ればそちらで何とかなると言えば何とかなりますが、連携の獲れていないデバイス間を行き来することになるので面倒。

SurfaceにはUSB付いているから繋げて情報のやり取りが出来るかな?

もうちょっと色々と調べてみる必要がありそうですね

ProcMonでレジストリ監視

アプリケーションでレジストリを参照している時、なぜかレジストリの中身が更新されてしまい思うように動かないという事態が発生し、レジストリを更新したのが何者なのか?を特定する為に監視したいという話がありました。

そこで、ちょっと使い方を気になっていたProcessMonitor (ProcMon.exe) を使ってみることにした。

ProcessMonitor の導入

ProcessMonitor はSysInternals Suiteの中の一つとして提供されています。
もちろん単独でもダウンロード可能

Process Monitor -Windows Sysinternals
http://technet.microsoft.com/ja-jp/sysinternals/bb896645.aspx

Windows上で動作するプロセスの様々な動作をリアルタイムに記録するという、障害調査する上では中々頼もしいツールです。
実行ファイル単独で動くので、比較的導入に対するコストもかからない。

起動とフィルターの設定

ProcMonを起動するとフィルター設定が出てくる

デフォルトで設定されているフィルターは基本的にはそのままでいいのだが、
ここではわかりやすくする為に選択してすべてをRemoveしてしまう。

その後、監視対象となるレジストリパスを登録する。
登録は左から「Path」、「is」、「レジストリパス」、「Include」でいい。

ここでは、テスト的にODBC設定を監視してみることにする。

 気を付けなければいけないのは、レジストリパスの指定。

RegEdit等でキーをコピーすると、通常

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI

のように始まる。
このパス名をフィルターに適用すると対象としてみてくれなかった。

このような場合は、

HKCU\Software\ODBC\ODBC.INI

のように省略キー名称で設定する必要がある。
省略キーの対応は以下の通り。

HKEY_USERS HKU
HKEY_LOCAL_MACHINE HKLM
HEKY_CURRENT_USER HKCU
HKEY_CLASSES_ROOT HKCR
HKEY_CURRENT_CONFIG HKCC

なんで完全キー名称ではだめで、省略キー名称じゃなきゃいけないのかは正確な理由はわからないが、単純に表示するリストビューの幅を節約するために省略して保存。
その保存したものにフィルターするから適用されないんじゃないかと推測している。

基本的に起動=キャプチャ開始状態になる。

上記の画面キャプチャにて、左下に「No events」と表示されている。
実は、デフォルトの設定ではここにものすごい数のイベントが、秒単位で増えていくことが表示される。
これは、デフォルト設定ではProcMonがフィルターで設定したイベント以外も全て記録しようとしているからだ。

フィルターで設定したものだけを記録する形にしないと、メモリやディスクを圧迫することになるので「Filter」→「Drop Filtered Events」にチェックを入れる。

 基本的な設定はこれで完了したので、動作を確認してみる。

 RegEdit.exeで対象のレジストリにアクセスすると

 問題なく記録された。

 “レジストリの監視”と言う話でいえば間違ってはいないのだが、もう少し手心を加えると

  • レジストリのPath指定で「is」ではなく「begins with」を指定してKEY配下のVALUEに対する操作を検知する
  • レジストリの編集のみを記録するため、以下のようなフィルターを追加する
    • Operation」、「is」、「RegQueryKey」、「Exclude
    • Operation」、「is」、「RegEnumValue」、「Exclude
    • Operation」、「is」、「RegOpenKey」、「Exclude

などなど。

他にも設定していけば、自分の求める情報をピンポイントで手に入れることができる。「Operation」に対して「RegSetValue」を「Include」で設定してもいいのかもしれないが、それはレジストリに対しての操作が何で行われていたかがはっきりしている場合に限られる。削除して追加したかもしれないし。

そういう意味では、上記のように関係ないものを除外するフィルターを追加していくのがいいのではないかと考えている。
試しに適当に動かしてみて、キャプチャーした内容を見たうえで除外のフィルターを作っていくのが一番確実だと思われる。

 

これで監視出来ているといえるが、もう少し手軽に監視をするために設定情報をエクスポートしておいて、バッチにて起動・停止出来るようにしておく。

File」→「Export Configuration…」で構成ファイルをエクスポート。
その後、バッチファイルでprocmonを次のような形で呼び出す。

procmon /minimized /backingfile <出力ファイルパス>\%date:~-10,4%%date:~-5,2%%date:~-2,2%%time:~-11,2%%time:~-8,2%%time:~-5,2%.pml /loadconfig <構成ファイルパス>

停止時には

Procmon /terminate

で停止するバッチをたたく形にする。

一応、最小化状態で立ち上げるための「minimized」を指定しているけど、タスクバー上に出てしまう上にバッチのDOSプロンプトまで出てしまうので正直微妙なのだが、まぁ手軽にはなったかな。

再起動時の動作に対して疑いたいときは、「Option」→「Enable Boot Logging」をONにする。

ダイアログが出てくるが、とりあえずそのまま「OK」でいい。

再起動後にProcMonを立ち上げると、ログを保存するか聞いてくるので保存すればOK。ただ、これに関しては試してない。
Helpには

If you configure boot logging and the system crashes early in the boot you can deactivate boot logging by choosing the Last Known Good option from the Windows boot menu (which you access by pressing F8 during the boot).

なんてことも書いてあるから、使うときは少し注意したほうがいい気もする。

今回はレジストリの監視にProcMonを使ってみたが、このツールは使いこなせばいろいろな調査に役立つ。
SysInternalsのツールはこういう役立つのが実に多いんだけど、使い方に慣れるのに少し手間取ってしまったりするな。

参考:Process MonitorについてのTips - Ask Core
http://blogs.technet.com/b/askcorejp/archive/2010/01/29/process-monitor-tips.aspx

上書きしたファイルのファイル名が変わらない

ずっとこれまでWindows使ってて、今更ながらに基本的な事に驚く事がある。

ファイルの名称は基本的に大文字/小文字を区別せずに考えられている。
同一のフォルダ内に「hoge.txt」と「Hoge.txt」は存在出来ない。

このように、英数ファイル名において大文字/小文字が異なるだけのファイルを上書きすると、
中身は当然のように上書きしたファイルによって更新されるのだがファイル名は更新されずに
そのまま維持されてしまう。

ファイルの上書きという行為は、削除してからの作成ではなくて中身の更新と言う動きなのだろうか。

実はこれ、試しにやってみたらMacでも同じ動きをした。

基本的に問題が起きるケースは少ないとは思うのだけど、作成したファイルをそのまま
Webサイトへとデプロイする場合にはパスが謝った状態となってしまうので気をつけなければ行けない。

うーん、何とかならんのかな。これ。

Skitch on Windows 8

普段、Macで利用しているSkitch。Windows版はなかったのですが、Windows8のStoreには実はあったりします。
もちろん無料で。

 

ただし、Store Appの場合はサンドボックスで動くので、Mac版のようにスクリーンをキャプチャすることはできません。
当初、リリースされていたSkitchは、画像をピクチャフォルダから取込む事しか出来ずに使い勝手に関していうと怪しいものでしたが、更新をかけてみたらクリップボードから取得する事も出来るようになり、使えるようになっていました。

画像の取得方法としては、地図・写真(ピクチャフォルダ)・クリップボードの3種類が用意されていて、その他に無地に絵を描くことも可能になっています。

なので、利用方法としてはPrint Screenにて画像をキャプチャして、Skitchを起動。”貼り付ける”を選択して使うといった形になります。

 

これまでもやろうと思えばできたのですが、地図との連携はちょっと面白いと思いました。

・・・・

 

あれ?

てっきりBINGのMAPと連携しているのだと思ったら、MapDataから取得しているようです。
見てみると、地図としてはさすがにGoogle Mapと比べると寂しいものがあります。
Appleの地図のように間違った情報が載っている訳ではないとは思いますが、情報量としては少ないかな、と。

この辺りは、使い方を検討するか、Google Mapをキャプチャして使うかと言った形で考えればいい事ですね。
Skitchの公式サイトにはWindows版に対しての言及がどこにも見当たらないと言うのが少し気になっているのですが・・・。
まだまだ試作品状態と言うことなのかな?

今後のアップデートがあるのであれば楽しみですね。

Windows8のODBC設定

Windows7までは64Bit OSにおいて、管理ツール上のODBCデータソースは、64Bit版しか表示されておらず、32Bitを操作するときはSysWow64からわざわざ実行しなければならなかった。

実際の所、アプリケーションはまだ32Bitが主流だった事からか、Windows8では最初からコントロールパネルに両方表示されている。

 

エクセルのVBAからODBCを利用してOracleやDB2に対してアクセスして解析するツールを自前で作っていたので、その設定の為にいじって見ている。

これは64Bit版を表示した画面だが、32Bit版のデータソースも表示されており、”プラットフォーム”列によってそれを見分ける形となる。
ただし、それぞれのプラットフォームにあった管理ツールからでないと新規追加や構成の変更を行うことはできない。

使用するアプリケーションのプラットフォームにあったデータソースを定義しないと、そのアプリケーションでは接続することができない。

見てみると、Excel32Bitで立ち上がっているみたいだ。なんでだろう?
ちゃんとMicrosoftのページに書いてあった。

64 ビット OS に Office 2010 のインストール DVD-ROM をセットした場合、既定では 32 ビット版 Office 2010 のインストーラーが起動します。これは、64 ビット OS 環境に対しても 32 ビット版 Office 2010 をインストールすることが推奨されているためです。
http://support.microsoft.com/kb/2248011/

 

これを見る限りでは、何も考えずに普通にインストーラーを実行してしまったので、32Bit版がインストールされてしまったのだ。

Microsoftの言い分としては、サードパーティー製アドイン等に対する互換性が意識されての話のようだ。デフォルトで立ち上がるIE32Bitだし、OS64Bitと言ってもなんだかんだ言ってメインは32Bitアプリケーションが多いんだなと実感。

実際のところ、それほどアドイン機能を使っていないので64Bitでもそれほど問題は無いとは思うのだけど、わざわざ入れ直すのも面倒なのでこのままで行く事にしました。

 

Windows8のマルチディスプレイ対応

今回、Windows8に更新した一つの理由にディスプレイの変更があります。

これまでは15インチのディスプレイ2台を利用していました。解像度としては1280*1024が二つですね

これが、新しく支給されたディスプレイは1920*1080の解像度を可能とするワイドディスプレイでした。

Windows8ではModern Style Appsが横にスクロールするモデルをとっているので、推奨としては1366*768以上。Windows7にするか少し躊躇していたのですが、これによって大きくWindows8へ舵を取った形となりました。

ただし、支給されたのは1台だけなので、ワイドディスプレイ+通常(?)ディスプレイの組み合わせですが。
ワイドディスプレイを縦置きして、ソースやWebページの閲覧に使おうかとも思いましたが、まずはModern Style Appsの利用のために横置きしてメインモニタとして活用することにしました。

 

Windows8では複数のディスプレイに対しての対応がいくつか行われています。

これまで、マルチディスプレイを利用しているときはタスクバーがメインディスプレイにしかありませんでした。
Windows8では全ディスプレイにタスクバーを表示し、そこに何を表示するのかを選ぶことができるようになっています。

ウィンドウは移動させる事が多いので、基本的にタスクバーにあるボタンはすべて表示させる形。つまりデフォルトのまま今は使っています。

Windows8になって変更されたスタートスクリーンや、端にカーソルを持って行く事で表示されるチャームもそれぞれのディスプレイで表示させる事が出来ます。
また、ウィンドウをドラッグして全画面表示や画面半分へフィットさせるもそれぞれのウィンドウで可能になっていました。

各ディスプレイの境界には、端っこだけガードが仕掛けられていて、マウスをある程度の速さで動かして持っていくと隣のディスプレイにはカーソルはいかずに留まるようになっています。
面白いですね。

これらは地味に便利で、マルチディスプレイを利用した時にマウスカーソルをわざわざメインディスプレイに持っていかないと切り替えられないので面倒なのだ。

もちろん、マルチディスプレイしている人なんてキーボードで切り替えなりなんなりをしているから関係ないってのはあるかもしれないが。

ウィンドウを楽に画面半分表示にさせる事が出来る動きは便利なのですが、マルチディスプレイの対応に関しては中途半端な印象を持っています。
ディスプレイとディスプレイの境界側にフィットさせる事が出来ないのです。
そのため、この機能は現状ではマルチディスプレイ環境では使いづらい状態にあります。修正されないかな?

 

Modern Style Appsはと言うと、立ち上げた側のスクリーンで起動します。

つまり、一方はModern Style App。もう一方はデスクトップを表示と言ったシナリオも行えるし、ドラッグによって別のスクリーンにModern Style Appsを持って行く事も可能です。

色々と組み合わせて試してみたいですね

Windows転送ツールを利用した環境移行

今回VistaからWindows8へ環境移行を行うにあたって、Windows転送ツールを使ってみたのでその備忘録を。
Windows転送ツールは、MCPの資格取得時に勉強していたので知ってはいたが、実際に使ってみた事は無かった。

開発を行っていると、設定周りには様々なゴミが残ってしまうため、移行時にそれらも一緒に引き連れてしまう事を嫌った為だ。
とは言っても、環境の移行で数時間を費やすのもそれはそれで馬鹿らしいし、やった事も無かったのでやってみたいと言う何とも安直な理由で今回試してみる事になった。

 

転送元での操作

まず、転送元の環境でWindows転送ツールを起動する。
転送ツールはWindows8のディスク内(/support/migwiz/Migsetup.exe)に入っている。

注意しないといけないのは、対応するビット数の転送ツールを使う必要があるところ。
今回私は、32Bit Vistaから64Bit Win8への移行だったので、わざわざ32Bit Win8のメディアから転送ツールを持ってきて起動した。
なお、Windows7には転送ツールが 最初からインストールされている為に、特にメディアから持ってくる必要は無いらしい。

 

 

転送ツールが開始される。”次へ”を押す

 

転送の方法としては3種類から選ぶ。
今回私は新しいPCへの移行で両方とも手元にあるのでネットワークを利用することにした。

 

Windows8の転送ツールを利用しているからか、選択肢は一つで”これは今までのPCです”を選択します。

 

すると、移行元のPCとしては作業が完了し、待ち状態に入ります。

この時、移行先のWindows8側で転送ツールを立ち上げずに”次へ”を押すと、移行は失敗してしまうのでこのまま、左下の転送ツールキーをメモって新PCへ移動します。上記の画像では「931-592」に当たる部分です

 

移行先での操作

移行先で転送ツールを起動して、転送ツールキーを入力すると自動で情報が確認され、転送する内容を選択する画面が表示されます。

ここで、転送元のPCから移行するプロファイルを選択します。
“ユーザー設定”を選ぶことでより詳細な内容まで選択することができます。

必要なものを選択したら”転送”を実行。
転送が完了したら確認画面が表示されます。

 

最終的に移行が完了したアプリケーションやプロファイルの情報をレポートで確認することができます。

このレポートは後々からでも確認することができるので、移行元のPCに何のソフトウェアを入れていたのかを確認するのに役立ちます。

ソフトウェアをインストールすることでチェックもつくので、何のソフトウェアをあとインストールしなければいけないかがわかっていいですね。

 

感想

これまでは、ひたすら手動で行ってきた環境移行ですが、転送ツールを利用することでかなりの部分が楽になった感じがします。
特にOutlookのデータとか設定周りもうまく引き継いでくれたのはよかったですね。

ちょっと困るのは、何の設定情報が引き継いで何の情報が引き継いでいないかがかえって分かりづらい面もあるということです。
ほとんどの設定が引き継いでくれている割に、同じオフィスでも引き継いでくれない部分もあったり。この辺りは言い出すときりがないのかもしれません。

ODBCの設定に関しても、データソースの定義そのものは引き継いでくれたものの、肝心のドライバが存在していない(当たり前と言えば当たり前だが)ので当然の事ながら動かない。
こういう場合は、ゴミデータを増やすだけになってしまいますね。

メインブラウザにGoogle Chromeを利用しているので、設定周りは基本的にログインすれば勝手に同期される。やっぱりプロファイルの情報がクラウドにあると、こういう時便利だなと強く感じる。
この辺りの体験はiPhoneも同じで、MicrosoftとしてもVDIに向けた取り組みとして幾つか用意されている。

でも、やっぱり日本の企業はまだまだそういったプロファイルや企業で利用するデータを外部に保存すると言うのは抵抗があって、中々思うようにいっていないと言うのが実情に感じる。
ましてや自宅環境ともなると、なかなか難しい。

すべてをクラウドに置きたい訳ではないけれど、ドンドン楽になっていくとありがたい。

Surfaceは日本では発売されないだって?

MicrosoftがSurfaceに関しての情報をアップデートしてきました。

http://youtu.be/8mSckyoAMHg

これはSurfaceのCM。とりあえず、カチャカチャと結構音がする事はわかったぞ。

さて、10/26に発売を予定しているSurface。
価格としてはiPadと同じ499ドル。
Officeが付いてくる仕様だそう(RT版のみで、Proは自分で購入する)
アメリカでは既に予約が始まったとの事。

日本ではどうなのかな〜と見てみると

 http://japanese.engadget.com/2012/10/16/surface-windows-rt/
Surface は米国とカナダに加えてオーストラリア、中国、フランス、ドイツ、香港、英国の8か国でオンライン販売される予定です。「Japan」は今のところ含まれていません。

え。。。
なんでや・・・

WindowsPhone8が日本を外した事から、少し嫌な感じはしていたけど、Surfaceまで対象外にするのはちょっとがっかり。
Windows8がタッチを意識したOSだと言うのに、肝心のMicrosoft謹製のデバイスが発売されないと言うのは
ユーザーの立場としても開発者の立場としても正直がっかりなところが否めないなぁ。

Modern Style UIに対しての試行錯誤と言う面で大きく出遅れる事になるんだろうか。
それとも、国内の他のメーカーがMicrosoftを上回るデバイスをリリースするんだろうか。
うーん、残念