by kusakari
1. 7月 2010 17:45
Exchangeのシェルを使って、メールボックスのサイズが大きいユーザーを取得してみたいと思います。
Get-MailboxStatistics コマンドでメールボックスに関する情報を取得できます。あとはパイプを繋いで、Select-Object から TotalItemSize を指定すれば確認できます。
■サンプル1
下記のコマンドの場合は、全てのメールボックスからサイズの大きいユーザー上位10人を表示させています。
Get-MailboxStatistics | sort TotalItemSize -Descending | select DisplayName, TotalItemSize -First 10
■サンプル1 - 結果

■サンプル2
これだけでも十分なんですが、サイズがByteで表示されているのが読みにくいので、単位変換をかけておきます。
Get-MailboxStatistics | sort TotalItemSize -Descending | select DisplayName, {"{0:#,##0} MB" -f $_.TotalItemSize.Value.ToMB()} -First 10
■サンプル2 - 結果
※select に対してスクリプトブロック(中括弧)を使うことが出来きます。その際、プロパティに対してメソッドの実行などが可能です。
f20627dd-2fe3-495c-be90-c03446adbe23|0|.0
by kusakari
29. 5月 2010 15:26
前回に引き続き、Flickr.Net を使って Flickr 上の写真を検索してみます。
http://flickrnet.codeplex.com/
※今回はバージョン2.2です。
まずは、PowerShell から「Flickr.dll」を読み込みます。
[System.Reflection.Assembly]::LoadFile("C:\Temp\FlickrNet.dll");
APIKEYを渡して、FlickrNet.Flickrを作ります。
$fckr = New-Object FlickrNet.Flickr($apiKey);
ココまでは前回と同じです。
今回はココから、PhotoSearchOptions を作り、この各プロパティに検索したい情報をセットします。
$searchOpt = New-Object FlickrNet.PhotoSearchOptions;
例えば、写真についてるタグで検索したい場合は、下記のような感じになります。
$searchOpt.Tags = "タグ";
条件にあった写真は PhotosSearch に PhotoSearchOptions を入れることで取得出来ます。
$fckr.PhotosSearch($searchOpt)
■サンプル
$userName で指定したユーザーが投稿し、タグが「ネコ」とついている写真のURLを出力します。
$apiKey = "<取得したAPIKEY>"
$dllPath = "C:\Temp\FlickrNet.dll"
$tagName = "ネコ"
$userName = "<ユーザー名>"
#DLL読み込み
[void][System.Reflection.Assembly]::LoadFile($dllPath);
#検索内容作成
$fckr = New-Object FlickrNet.Flickr($apiKey);
$searchOpt = New-Object FlickrNet.PhotoSearchOptions;
$searchOpt.UserId = $fckr.PeopleFindByUsername($userName).UserId;
$searchOpt.Tags = $tagName;
$fckr.PhotosSearch($searchOpt).PhotoCollection | % { Write-Host $_.MediumUrl; }
■ 結果


9327424a-fbea-4668-ac31-486ae2afa56e|0|.0
Category: PowerShell
Tags: Flickr, ネコ
by kusakari
26. 5月 2010 23:51
今回の内容は先に明記しますが、実用的なものではありません。あくまで個人のメモ内容です。
下記 CodePlex にて公開されている Flickr API のライブラリを使って、PowerShell から Flickr に写真をアップロードしてみたいと思います。
http://flickrnet.codeplex.com/
※今回はバージョン2.2です。
API Key を取得していない場合は、だいたい下記のような流れになります。
1. yahoo.comで ID の作成。
2. Flickr Servicesにて申請し取得。
http://www.flickr.com/services/apps/create/apply
上記、CodePlexからダウンロードしたファイルを解凍して、”Release”フォルダにある「Flickr.dll」ファイルを適当な場所(今回はC:\Tempフォルダ )に保存しておきます。
PowerShell から 「Flickr.dll」 を読み込みます。
[System.Reflection.Assembly]::LoadFile("C:\Temp\FlickrNet.dll");
取得したAPIKEYを渡して、FlickrNet.Flickrを作ります。
New-Object FlickrNet.Flickr($apiKey);
PhotosGetInfo で、URLに関するプロパティ、MediumUrlなどがありますので、このプロパティ情報をもとに、WebClientなどを使ってダウンロードします。
また、ダウンロードする写真のIDに関しては今回は、FlickrのサイトのURLで事前に確認しておきます。
※下図の場合は、写真のIDは「4626070597」になります。

■サンプル
下記のサンプルは、Flickr上で保存されている写真を、C:\Temp フォルダに test.jpg という名前で保存します。
$apiKey = "<取得したAPIKEY>"
$photoId = "写真ID"
$dllPath = "C:\Temp\FlickrNet.dll"
$savePath = "C:\Temp\test.jpg"
#DLL読み込み
[void][System.Reflection.Assembly]::LoadFile($dllPath);
#写真情報取得
$fckr = New-Object FlickrNet.Flickr($apiKey);
$photo = $fckr.PhotosGetInfo($photoId);
#画像ダウンロード
$wc = New-Object Net.WebClient
$wc.Credentials = [System.Net.CredentialCache]::DefaultCredentials
$wc.DownloadFile($photo.MediumUrl, $savePath)
$wc.Dispose();
b2f043e5-5d37-4a91-9a05-fcbd818fcd2d|0|.0
Category: PowerShell
Tags: Flickr
by kusakari
13. 5月 2010 17:20
PowerShell から サムネイル画像を作成してみたいと思います。
まず、下記のようにSystem.IO.FileクラスのOpenReadで、FileStreamを作成します。
$fileStream = [System.IO.File]::OpenRead("c:\temp\0001.jpg");
次に、System.Drawing.Imageクラスの、FromStreamでImageを作成します。
$image = [System.Drawing.Image]::FromStream($fileStream, $false, $false);
そして、ImageのGetThumbnailImageに、拡大縮小したいサイズなどを渡して、サムネイルを作成します。
$image.GetThumbnailImage(100, 100, $null, [System.IntPtr]::Zero);
■サンプル
c:\temp\0001.jpgファイルを縦横それぞれ100ピクセルに縮小して、ファイル名の頭に「thumb_」をつけ同じフォルダに保存しています。
$picturePath = "c:\temp\0001.jpg";
$width = 100;
$height = 100;
$stream = [System.IO.File]::OpenRead($picturePath);
$img = [System.Drawing.Image]::FromStream($stream, $false, $false);
$thumb = $img.GetThumbnailImage($width, $height, $null, [System.IntPtr]::Zero);
$saveThumbPath = [System.String]::Format("{0}\\thumb_{1}", [System.IO.Path]::GetDirectoryName($picturePath), [System.IO.Path]::GetFileName($picturePath));
$thumb.Save($saveThumbPath, [System.Drawing.Imaging.ImageFormat]::Jpeg);
$thumb.Dispose();
$img.Dispose();
$stream.Close();
$stream.Dispose();
7c79de5a-eb91-4eda-b969-c98bc311d3c0|0|.0
Category: PowerShell
Tags:
by kusakari
3. 4月 2010 13:39
前回、PowerShellからBITSを使ってファイルをアップロードしました。
今回は、PowerShellからBITS転送でファイルのダウンロードを行ってみたいと思います。
ダウンロードするファイルは、TechDays2010の、セッションビデオをダウンロードしてみたいと思います。
まずは、試しに1セッションのビデオをダウンロードしてみたいと思います。
※ココでは、URL先のWMVファイルを「E:\temp\techdays2010」に保存しています。
Import-Module BitsTransfer
$url = "http://download.microsoft.com/download/1/9/0/19084DB9-5226-47BA-918F-69689B445FAF/T1-201.wmv;"
$dest = "E:\temp\techdays2010\"
Start-BitsTransfer -Source $url -Destination $dest
で、実行すると下図のような感じで転送が始まります。

ということで、ボタンをぽちぽち押して同じ作業をする気もないので、セッションビデオをBitsを使って一気にダウンロードしてみたいと思います。
ダウンロードするURLの取得部分に関しては、以下のURLに記載されているHTTPアクセス部分と正規表現、そのまま引用させて頂いています。
http://blogs.technet.com/stanabe/archive/2009/12/03/how-to-extract-link-urls-on-web-page.aspx
■サンプル
Import-Module BitsTransfer
$url = "http://www.microsoft.com/japan/events/techdays/2010/session/download.aspx"
$dest = "E:\temp\techdays2010\"
$w = New-Object System.Net.WebClient
$enc = [System.Text.Encoding]::GetEncoding("UTF-8")
$h = $enc.GetString($w.DownloadData($url))
$regex = "<\s*a\s*[^>]*?href\s*=\s*[`"']*([^`"'>]+)[^>]*?>"
$m = $h | Select-String -Pattern $regex -AllMatches
$m.Matches | %{ $_.Groups[1].Value } | Select-String "wmv" | %{ Start-BitsTransfer -Source $_ -Destination $dest }
b20666e3-c48f-4b90-be4c-640f040ec330|0|.0
Category: PowerShell
Tags: BITS