Pages

Dec 17, 2006

Powershellのある生活 ~こんなことができるよ Vol.3~

自動的に定義される変数(組み込み変数)の一覧
    Get-help about_automatic_variables | more

デスクトップフォルダやマイドキュメントフォルダに簡単にアクセスする
    DOSコマンド substを使って"subst P: 'C:\Documents and Settings\hoge\デスクトップ'"とすると指定のディレクトリをPドライブとして使用できる。このコマンドを$PROFILEに書いておけば便利。

WMIでコンピュータの情報を取得する
    mshより飛躍的に楽になっている。詳しくはPowerShell Week 3日目のスライド35のあたりから書いてある。

    get-wmiobject Win32_NetworkAdapter  | select-object MACAddress
イベントログを確認する
    get-eventlog -logname application -newest 5
出力をHTMLに変換
    ps | convertto-html | tee -file ps.html
コマンドの出力が長い場合に右端で折り返して表示する
    Get-Command | Format-Table -wrap | more
CPU使用率1%以上のプロセスをCPU使用率順に並べてHTMLで出力
ps | sort cpu -descending | where {$_.cpu -gt 1} | ConvertTo-Html |     tee -file heavyprocess.html
ps | where {$_.CPU -gt 1} | select processname,cpu | sort cpu -descending
ExcelをCOMオブジェクトを使って呼び出す
    $objE = new-object -comobject Excel.Application
    $objE.Visible = $true
    $objWB = $objE.Workbooks.add()
    $objWS = $objWB.Worksheets.Item(1)
    $objWS.Cells.Item(2,2) = "Feel the Power"
    $objE.Quit

レジストリにキーを追加する

FAQにサンプルがのっているが、その通りやっても上手くいかなかったので調査中


COMを使ってIEを呼び出す

    $tmp_myweb = "http://localhost:4664"
    $ie = New-Object -ComObject InternetExplorer.Application
    # IEプロセス起動。
    $ie.Visible = $true
    # IEが見えるようになる
    $ie.Navigate($tmp_myweb)
    # $tmp_mywebが表示される。
    $ie.Document.Body.InnerText

.net frameworkのWebClientクラスを呼び出して、Webページをダウンロードする

$tmp_myweb = "http://localhost:4664"
$web = new-object System.Net.WebClient
$page = $web.downloadstring($tmp_myweb)

このあたりでメソッドやプロパティの名前が分からない場合は"$web | get-member"して確認するとよい

ファイル選択のためのウィンドウを開く
    $objShell = New-Object -com "Shell.Application"
    $objFolder = $objShell.BrowseForFolder(0,"Pick ME!",0)

ファイルや変数の中身を比較する

diff(Compare-Object)を使う。直接ファイルを比較できないっぽい?

    $processes_before = get-process
    notepad # notepadを起動する
    $processes_after  = get-process
    compare-object -referenceobject $processes_before -differenceobject $processes_after
カラフルに出力
Write-Host -ForegroundColor red -BackgroundColor yellow "Red Hot Alert!!!"