2016年2月12日金曜日

◆メモ帳に処理結果を出力する

PowerShellの結果を何処かにテキストファイルとして保存して、それをメモ帳で開く。
なんてのは以前やったことがあるが、これは未保存のテキストデータを直接メモ帳で表示しようというもの。

WindowsAPIを使って本格的にやっている。

プロファイルに入れておくと便利なこともあるかなぁ。

Send Text to Notepad

2016年2月8日月曜日

◆フォルダ配下のソースファイルを対象に文字列置換(パイプラインは難しい)

大体判ったつもりでいるパイプラインだが、今回はちょっとハマった。

以下の処理はあるフォルダに有るソースファイルを対象に、まとめて文字列置換しようと言うもの。
今回はファイル名に対しても同じ置換を行っている。

大したことはない処理なのだが、なぜか思い通りの結果にならない。

001
002
003
004
005
006
007
008
009
010
011
012
013

Param(
 
$path,
  $BeforeString,
  $AfterString
)

dir $path -File *.cs | %
{
 
$tString = gc $_.
FullName 
 
Move-Item $_.FullName ($_.FullName + ".old"
)
 
$newName = $_.Name -replace $BeforeString,$AfterString
  $newPath = Join-Path $_.DirectoryName $newName
  $tString -replace $BeforeString,$AfterString | Set-Content $newPath
}

変換前
image

変換後
image

“HenoUmu”を”KeizokKbn”に変換しているのだが、なぜか変換後のファイルが再び変換対象に含まれている。
先頭の1個だけ。

不思議というか、きっとみんなハマりますよね・・・。

とりあえず、カッコを付けて、(dir $path –File *.cs)  |  ~
とやるんですかね。

2016年2月7日日曜日

◆Windows10でスリープ

以前作ったスクリプトのスリープがうまくいかなくなってしまった。

復帰に失敗するのだ。
マウスクリックにより復帰し始めてHDとかにアクセスしにはいくのだが画面が黒いままだんまり。

Windows7からWindows10にアップグレードしてからも問題なく動いていたが、どうも先日のWindowsUpdateが宜しくなかったようだ。

試しに、スクリプトでは無くメニューからスリープすると問題ないので、このスクリプトからのスリープはメニューからのスリープと全く同等の物ではないのだろう。

マザーボードの最新ドライバーとかを入れると直るのかもしれないが、現象からすると微妙な感じ。

メニューと全く同等のスクリプトが組めれば良いだけなのだが、なんとも・・・・。

電源周りはどうしてもハードとの相性が出てくるので昔から混沌としてあまり関わりたくない。

ちょっとだけ調べたので一応メモだけしておく。

我らが牟田口さんが紹介していた方法。
rundll32.exe powrprof.dll,SetSuspendStateを使う方法

こいつはPCの休止状態が有効の場合は休止してしまうようだ。
休止を無効にするのはここらへんが参考になりそうだが、特に使いはしないのだが貧乏性なので無効にしてしまうのはちょっともったいない気がする。

ここでちょっと脱線すると、そもそも休止状態って有効になっているっぽいんだけどどこから使うの?と疑問に思う。メニューとかには見当たらない。
電源設定とかを見渡しても良く判らない・・・。
というか、この電源設定メニューってカオスすぎ。
どうするとここまでいい加減なメニュー体系になるのかなぁ・・・。

とりあえず以下を参考にすれば使えるようになりそう。
スタートメニューの電源オプションに休止状態を表示する方法

というわけで、どんどん深みにはまっていきそうなので、さしあたってショートカットとかがないのか探してみる。(画面をロックする時のWin+Lみたいなやつ)

一発で出来る奴は見当たらなかったので、さしあたって、
「Windowsキー + Xキー」 ⇒ 「Uキー」 ⇒ 「Sキー」

って感じだろうか。

また、電源周りの説明は以下に結構詳しくまとまっている。
Windows をコマンドラインやショートカットからお手軽にスリープさせる方法

ここで紹介しているSysinternalsとかを使うのが一番スマートなのかもしれない。
(が、標準装備じゃないのがちょっと残念)

---

その後使っているとやっぱり復帰失敗が度々発生。
いくら調べてもこれといった解決策は見つからず・・・。
必ず失敗するわけでは無いことから、致命的な問題では無いと思われる。
微妙なタイミング的問題か・・・。

ここでふと、先日会社のPCの調子が悪くなって思いあぐねていたところ、メモリーの挿し直しで解決したことを思い出した。

思いつきでUSB機器(といってもキーボードとマウスだけだが)を挿し直す。
(ドライバーが自動で再インストールされる)

なんと、見事に解決。\(^o^)/
1ヶ月ほど経ったが失敗は無し。

2016年2月2日火曜日

◆PowerShell のバージョンと対応OS

Windows10に搭載されたPowerShellのバージョンが5.0となった。
Windows7時代の2.0から比較的速いペースで上がってきたために自宅や会社で接するPowerShellのバージョンが混沌としている。

表記の資料がWikipediaに纏まっていたのでコピペしておく。

PowerShell のバージョンと対応OS
項目 1.0 2.0 3.0 4.0 5.0
Windows Server 2003 ○SP1 ○SP2 × × ×
Windows Server 2003 R2 ○SP1 ○SP2 × × ×
Windows Server 2008 ○SP1 ○SP2 × ×
Windows Server 2008 R2 ○SP1 ○SP1 ○SP1
Windows Server 2012
Windows Server 2012 R2
Windows XP x64 × × × ×
Windows XP ○SP2 ○SP3 × × ×
Windows Vista ○SP1 × × ×
Windows 7 ○SP1 ○SP1 ○SP1
Windows 8 × ×
Windows 8.1
Windows 10

「◎」標準搭載、「○」インストールして利用可能、「→」上位バージョン標準搭載、「×」利用不可

2016年2月1日月曜日

◆Start-MpScan

Quickly Scanning for Malware

Defender用のコマンド(Function)が提供されているそうな。Version3かVersion4あたりからでしょうか。

PS> Start-MpScan -ScanType QuickScan -ScanPath “C:”

なぜか私のWindows8.1環境ではエラーになった。(Windows10ではOK)
image

調べてみたが、ほとんど事例がなかったので私のPC環境がどこかおかしそうな気がする。