PowerShellでディスクトップのキャプチャを撮る

| 2010年10月19日火曜日
わざわざキャプチャを撮るのにPowerShellを使っても仕方がないから、あまり使う機会はないかもしれない。
普通にPrintScreenキー押してMSBitmapに張り付ければいいからね。

ただ、サーバー管理なんかをしている人だと、サーバー側で現在のサーバー自身のディスクトップをキャプチャして、定期的にメールしてくるってのは、わりといいのではないかと思って作成してみた。

下のコードはコマンドを打つと、カレントフォルダに「out.jpg」ファイルができる感じです。

--- PrintScreen-Desktop.ps1 ---
  1. param([string]$outImage = "out.jpg")
  2. $b = New-Object System.Drawing.Bitmap([System.Windows.Forms.Screen]::PrimaryScreen.Bounds.Width, [System.Windows.Forms.Screen]::PrimaryScreen.Bounds.Height)
  3. $g = [System.Drawing.Graphics]::FromImage($b)
  4. $g.CopyFromScreen((New-Object System.Drawing.Point(0, 0)),(New-Object System.Drawing.Point(0, 0)), $b.Size)
  5. $g.Dispose()
  6. $b.Save((Join-Path $PWD $outImage))

PowerShellで「du」コマンド その3

| 2010年10月7日木曜日
【その2】の「du」だと、フルパスが長すぎるとうまく取得できない場合があるのでWSHの力を借りる。

やっていることは、カレントフォルダ内のフォルダを対象に、右クリックのプロパティで取得できるサイズをとっているだけ。

GetFolderのSizeを取っているだけなのであっさりと書けるのがよい。

速度も【その2】の時より早い。
簡単に計測したのでは、【13倍】の速さだった。

$fs = New-Object -ComObject Scripting.FileSystemObject
ls | % {
if ($_.PSIsContainer) {
$name = $_.name
$size = ($fs.GetFolder($_)).size / 1MB
Write-Host $name " : " $size.ToString("0.00") "MB"
}
}