PowerShell for LL Users

PowerShell for LL Users

LL好きにおすすめ: こんなこともできるWindows PowerShell

LLまつり2013で発表した資料です。
資料中のコードはWindows7標準搭載のPowerPoint ISEで実演しました。

A6918d26a8d0c1dfcfd01b87edabfe1e?s=128

Tak Yanagida

August 24, 2013
Tweet

Transcript

  1. こんなこともできる Windows PowerShell (株) オンターゲット 柳田 岳洋 @tyanagida LL好きにおすすめ *

    当ファイルではコード部分に、Inconsolataというフォントを使っています。インストールされて いないPCでは、表示がずれることがあります。
  2. こんな人が…

  3. こんな人が… • Perlは4.019の頃から使っている • Linuxは0.99の頃から使っている • コマンドラインに直接 for とか書く •

    作業用に、細かいスクリプトをよく作る
  4. Windows経験はこれだけ

  5. Windows経験はこれだけ • Windowsプログラミングは、仕事でWindows CEを触ったことがある気がする程度

  6. Windows経験はこれだけ • Windowsプログラミングは、仕事でWindows CEを触ったことがある気がする程度 何を作ったかも 思い出せない…

  7. Windows経験はこれだけ • Windowsプログラミングは、仕事でWindows CEを触ったことがある気がする程度 何を作ったかも 思い出せない… Windowsよく分からない

  8. PowerShellで作った http://mailtester.ontarget.cc/app/

  9. PowerShellで作った http://mailtester.ontarget.cc/app/ 実際にOutlookで表示して、 PowerShellで自動キャプチャしてます

  10. PowerShellで作った http://mailtester.ontarget.cc/app/ 実際にOutlookで表示して、 PowerShellで自動キャプチャしてます PowerShell、 便利じゃん!!

  11. PowerShellで作った http://mailtester.ontarget.cc/app/ 実際にOutlookで表示して、 PowerShellで自動キャプチャしてます PowerShell、 便利じゃん!! メールテスター 検索

  12. PowerShellの概要  

  13. PowerShellの概要 •Windows7以降は標準搭載(Homeでも)  

  14. PowerShellの概要 •Windows7以降は標準搭載(Homeでも) •コマンドラインの他、IDEも標準搭載(ISEと呼ぶ) ブレークポイント設定、ステップ実行etc. 

  15. PowerShellの概要 •Windows7以降は標準搭載(Homeでも) •コマンドラインの他、IDEも標準搭載(ISEと呼ぶ) ブレークポイント設定、ステップ実行etc. •パイプが使える 記号も | でUNIXと一緒!!

  16. PowerShellの概要 

  17. PowerShellの概要 •Windowsの膨大な既存ライブラリを使える 例: .NET Framework Class Library http://msdn.microsoft.com/en-us/library/gg145045.aspx

  18. PowerShellの概要 •Windowsの膨大な既存ライブラリを使える 例: .NET Framework Class Library http://msdn.microsoft.com/en-us/library/gg145045.aspx C#のインタプリタ版

  19. パイプを通るのはオブジェクト

  20. パイプを通るのはオブジェクト PS> ls | sort

  21. パイプを通るのはオブジェクト 実行結果のオブジェクトが 通ってます PS> ls | sort

  22. PS> ls PS> ls | sort PS> ls | sort

    –Property Length PS> $res = ls; $res.GetType() PS> $res[0].GetType() PS> $res[0] | Get-Member PS> $res[0].GetFiles() PS> $res[0].CreationTime 実際にISEで試してみる
  23. PowerShell入門

  24. あとはhelpコマンドを知っていればとりあえずOK (例: help get-member) PowerShell入門

  25. できること(1):アプリの操作 • Outlookの例 PS> $ol = New-Object -ComObject Outlook.Application PS>

    $ol.Session.Folders[1].Name PS> $ie = New-Object -ComObject InternetExplorer.Application PS> $ie.Visible = $true PS> $ie.Navigate(“http://www.yahoo.co.jp/”) • InternetExplorerの例
  26.   できること(1)のMS的表現

  27. •COMインタフェースを自由に操作できる Outlook, ExcelなどもOK  できること(1)のMS的表現

  28. •COMインタフェースを自由に操作できる Outlook, ExcelなどもOK •各アプリのCOMインタフェースのドキュメントは MSDNに大抵あります Outlookの場合: “Outlook2010 Object Model Reference”

    できること(1)のMS的表現 http://msdn.microsoft.com/en-us/library/ff866465%28v=office.14%29.aspx
  29. できること(2):画面キャプチャ Add-Type -AssemblyName System.Drawing function screenshot([Drawing.Rectangle]$bounds, $path) { $bmp =

    New-Object Drawing.Bitmap -ArgumentList $bounds.width,$bounds.height $graphics = [Drawing.Graphics]::FromImage($bmp) $graphics.CopyFromScreen($bounds.Location, [Drawing.Point]::Empty, $bounds.size) $bmp.Save($path) $graphics.Dispose() $bmp.Dispose() } PS> $rect = New-Object Drawing.Rectangle –ArgumentList 100,100,400,300 PS> Screenshot $rect tmp.png
  30. できること(2)のMS的表現

  31. できること(2)のMS的表現 • .NET Frameworkクラスライブラリを自由に使える  System.Drawingの例 http://msdn.microsoft.com/en-us/library/system.drawing.aspx

  32. できること(3):Windowの操作 function Set-ForegroundWindow($hwnd) { $sig = @' [DllImport("user32.dll")] public static

    extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); [DllImport("user32.dll")] public static extern bool SetForegroundWindow(IntPtr hWnd); '@ Add-Type -MemberDefinition $sig -name NativeMethods -namespace Win32 [Win32.NativeMethods]::SetForegroundWindow($hwnd) } PS> Set-ForegroundWindow (Get-Process Outlook).MainWindowHandle
  33. できること(3)のMS的表現

  34. できること(3)のMS的表現 • C#をインラインで書ける • つまりWin32 APIを自由に呼べる

  35. マニュアル多すぎない?   

  36. マニュアル多すぎない? •実際には、マニュアルは後から読みました   

  37. マニュアル多すぎない? •実際には、マニュアルは後から読みました やりたいことをWebで検索  

  38. マニュアル多すぎない? •実際には、マニュアルは後から読みました やりたいことをWebで検索 Stack Overflowあたりでコードを見つける 

  39. マニュアル多すぎない? •実際には、マニュアルは後から読みました やりたいことをWebで検索 Stack Overflowあたりでコードを見つける 見つけた答えを解読する

  40. マニュアル多すぎない? •実際には、マニュアルは後から読みました やりたいことをWebで検索 Stack Overflowあたりでコードを見つける 見つけた答えを解読する 割と簡単!!

  41. 参考文献(1): 軽く試す人用 

  42. 参考文献(1): 軽く試す人用 •「使う気が無い人向けのPowerShell入門」 

  43. 参考文献(1): 軽く試す人用 •「使う気が無い人向けのPowerShell入門」 awkとの比較でPowerShellを紹介している

  44. None
  45. (引用) このシリーズは、PowerShellの面白さを、実際に触る気が無い Unix系のスペシャリストに対して伝える事を目的にしています。 http://karino2.livejournal.com/69885.html

  46. 参考文献(2): 使う人用

  47. 参考文献(2): 使う人用 • PowerShell in Action (2nd. Ed.)  演算子、制御フローから

     COM操作、.NET Framework活用まで  和訳は1st. Editionのみ  英語版はePub, PDFもあり http://www.manning.com/payette2/
  48. 参考文献(2): 使う人用 • PowerShell in Action (2nd. Ed.)  演算子、制御フローから

     COM操作、.NET Framework活用まで  和訳は1st. Editionのみ  英語版はePub, PDFもあり http://www.manning.com/payette2/ PowerShellの作者の本
  49. None
  50. One of the earliest successful scripting environments was something called

    Tool Command Language/Tool Kit (TCL/TK). PowerShell in Action 2nd. (p.743) (和訳) 最初期に成功したスクリプト言語環境の1つは、Tcl/Tkと呼ばれ るものだった。
  51. One of the earliest successful scripting environments was something called

    Tool Command Language/Tool Kit (TCL/TK). PowerShell in Action 2nd. (p.743) (和訳) 最初期に成功したスクリプト言語環境の1つは、Tcl/Tkと呼ばれ るものだった。 友達になれそう!!
  52. 終わりに

  53. 終わりに •PowerShell、LL好きに結構おすすめです

  54. 終わりに •PowerShell、LL好きに結構おすすめです •“メールテスター”もよろしく!!

  55. 終わりに •PowerShell、LL好きに結構おすすめです •“メールテスター”もよろしく!! メールテスター 検索