ページ

2012年8月18日土曜日

◆Windows8 has com

いよいよWindows8のダウンロードが始まった。

Windows8自体は「Surface」のようなハードが出てからじゃないと7との違いはあまり実感できないと思うのだが、とりあえずPowerShellの新バージョンが使いたいので適当なPCを見繕ってインストールしてみた。(まだ環境設定はあまり終わっていない)

1台目はネットワークをつながずにインストールしたのが災いしたのかNICを認識しない。(デバイスマネージャでエラーになる)

やむなく手動でドライバーを入れてみるがどうにもこうにもうまくいかない。
Windows8用のドライバーが落ちているはずもないので7用とかVista用とか入れてみるもエラーのまま。

再インストールなども行い2、3時間格闘して、半分あきらめかけていたところデバイスの削除と再起動でいつの間にか認識してしまった。
再インストールで変わらなかったものがデバイスの削除でうまくいくような気もしないので、適当に突っ込んだドライバーが功を奏したのか・・・・。
古いPCだし、最近はめっきりハードには興味がないのでとりあえず良しとする。

自宅に戻って自宅の古いPCにも入れ始める。
こちらはXGAでしか表示されない。
ドライバーを探すも、そもそもこのカードって何?ってな状態で右往左往。
なんとなく調べるとNvidiaのFX5200系?
適当にドライバーを入れて事なきを得る。

古いPCなので止せば良いのにスリープがしたくなる。(最近使っているPCはすべてスリープで使っているので)
メニューからのスリープではHDDは停止するもCPUファンもケースファンも回りっぱなし。
やむなくコマンドでスリープさせる。
「C:\Windows\System32\rundll32.exe PowrProf.dll,SetSuspendState」
こちらはスリープ状態が若干異なると聞いていたのだが、案の定うまくファンが止まってくれた。(ハイブリッドになるならないとかだったような・・・・)

スリープはしたのだが、マウスとかでは復帰してくれない。
仕方がないので電源ボタンをON。
すると驚いたことにBIOSが上がってくる。
あれ、シャットダウンされちゃったの?っと思ってみていると、ちゃんと前回状態に復帰した。
へぇ、最近はこんな風になるの?と思いつつも、古いPCでのスリープ絡みはいろいろと難しいので追及はしない。

で、めでたしめでたしかと思うとNICが復帰してくれない。
駄目じゃん。
有効無効を切り替えてあげれば復帰するが、毎回やるのは面倒でしょう。
image

仕方がないので、PowerShellスクリプトでスリープ復帰イベントを拾って自動化することに。
スリープ解除イベントは以前も使っているのですぐにできそう。
PowerShell: ◆スリープ(Sleep)解除イベントを拾う

スクリプトを作ってスタートアップに入れてOK

っと思ったのだが、実行されない。

Windows8ってスタートアップが実行されないの?
っと色々調べてみるも、実行されるものとされないものとあったり・・・。
組み合わせの影響を受ける?
っと嵌りまくって????

一晩悩んだが、どうも「管理者として実行する」が引っかかっているような感じ。
そもそも7ではUACを切っておけば「管理者として実行」されたのだが、8では明示的に「管理者として実行」する必要がある。

「スタートアップ」自体、8では全面に出ていないのであまり使わない想定?
仕方がないので「タスクスケジューラ」に変更。
最近のタスクスケジューラは高機能なので「スタートアップ」はお役御免なのかも、っと思いつつ「タスクスケジューラ」を探したのだが、なぜか出てこない。(タスクマネージャしか出てこない)
image

きっとアプリケーションって位置づけじゃないのね。(でも7なら出てきたのにぃ・・・)
これまた仕方がないので「taskschd.msc」で起動。

結局のところ、Windowsを使う「こつ」はGUIに頼らないことなのかも知れない。
覚えるのはちょっと面倒だが、バージョンが変わってもずーと使えるものね!!

「管理者として実行」をタスクで実現するには以下の設定を行う。
image

また、タスクスケジューラは実行条件を各種指定できるので、PowreShellでスリープ復帰イベントを拾うのではなく、こちらの機能を使った。
スリープ復帰時、イベントがログに出力されているようなのでそれを拾う指定とした。
image

「操作」はこんな感じ。
image

引数は「-windowstyle hidden -file "C:\Users\minminnana\Documents\PS\ネットワークアダプターをリセット.ps1"」としている。

スクリプトは以下を参照。
PowerShell: ◆ネットワークアダプター(NIC)をリセットする

0 件のコメント:

コメントを投稿

私が最近チェックした記事