Power shell 3.0の魅力

2,870 views
2,678 views

Published on

めとb

Published in: Technology, Education
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,870
On SlideShare
0
From Embeds
0
Number of Embeds
43
Actions
Shares
0
Downloads
14
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Power shell 3.0の魅力

  1. 1. PowerShell 3.0の魅 力 ~Windows 8の隠れた主役~ めとべや東京 #1 2013/07/06 @oota_ken
  2. 2. 自己紹介 仕事 Jenkinsとかで自動化する PowerShellのBlogを書く 好きなもの シェル SQL 嫌いなもの Excel方眼紙 OTL
  3. 3. 僕の最強のデスクトップ スタート画面なんて飾りです。偉い人にはそれがわからんのです
  4. 4. PowerShellの魅力
  5. 5. 全てがオブジェクト 例:20MB以上のメモリを消費しているプロセス C:>Get-Process | ? PM -gt 20MB Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 1880 262 54804 149460 718 50.00 7884 explorer 651 34 27744 43108 187 2332 integratedoffice 1017 44 23064 23624 1133 3.35 6624 LiveComm 475 83 92792 81440 238 2696 MsMpEng 266 33 31448 3280 629 0.16 5164 pcee4 1414 124 231488 295532 781 142.26 4192 powerpnt 433 27 64484 76128 627 15.90 3320 powershell 163 26 32872 32572 516 1988 PresentationFontCache
  6. 6. .NET, COM, WMIが簡単に使える Excelの関数もPowerShellから簡単に呼び出せる C:> $xl = New-Object -ComObject Excel.Application C:> $wf = $xl.WorksheetFunction C:> $wf.Average(@(1, 2, 3, 4, 5)) 3 C:> $wf.Sum(@(1, 2, 3, 4, 5)) 15 C:> $wf.Slope(@(2, 4, 8), @(1, 2, 4)) 2
  7. 7. PowerShellの魅力 その3 高階関数(スクリプトブロック)使える (F#っぽく書ける) ただし、F#のような部分適用はできない C:> Get-Content .inject.ps1 function inject { param ($init, [ScriptBlock] $block) begin { $_l = $init } process { $_l = & $block $_l $_ } end { $_l } } 1, 2, 3 | inject 0 { param($sum, $i) $sum + $i } C:> .inject.ps1 6 C:> $add = { param($x) { param($y) $x + $y}.GetNewClosure() } C:> $add3 = & $add 3 C:> & $add3 5 8
  8. 8. その他 ネットワークが遮断された環境でもプログラミングできる(*⌒▽⌒*) Windows 7 以降で標準組み込み Excel方眼紙環境でもExcelのCOMが全部使える コマンドレットの動詞と名詞が標準化されている 最小限のキーワードさえ覚えていれば、補完とインテリセンスでなんとかなる UNIXのコマンドやコマンドプロンプトのように複雑怪奇ではない よくやくCygwinいらなくなった PowerShellのコマンドレット+.NET、COMオブジェクトでほぼ全ての作業が足 りる
  9. 9. PowerShell3.0の新機 能
  10. 10. 連想配列からのオブジェクト作成 がシンプルに C:> $powerShell2Item = New-Object PSObject -Property @{ Id = 1; Name = "ThinkPad X1"; price = 150000 } C:> $powerShell2Item price Name Id ----- ---- -- 150000 ThinkPad X1 1 C:> $powerShell3Item = [pscustomobject] @{ Id = 2; Name = "ThinkPad X1 Carbon"; price = 170000 } C:> $powerShell3Item Id Name price -- ---- ----- 2 ThinkPad X1 Carbon 170000
  11. 11. Where-ObjectやForEach-Objectの 記法がシンプルに PowerShell 2.0 PowerShell 3.0 C:> get-process | ? { $_.PM -gt 20MB } C:> get-process | ? PM -gt 20MB
  12. 12. Webへのアクセスがコマンドレッ トで標準に PowerShell 2.0 PowerShell 3.0 C:> (New-Object System.Net.WebClient).DownloadString("http://www.microsoft.com") C:> Invoke-WebRequest "http://www.microsoft.com"
  13. 13. PowerShell ISEでIntellisenseが有効 に
  14. 14. UNIXの.*shな方へ
  15. 15. Exitするとhistoryが消えちゃうんだ けど $profileに記述して、Invoke-Historyで呼び出せます とはいえ、Ctrl-Pでは呼び出せないです>< C:> Get-Content $PROFILE | Select-String "Set-Alias" Set-Alias Word "C:Program FilesMicrosoft Office 15rootoffice15winword.exe" Set-Alias Excel "C:Program FilesMicrosoft Office 15rootoffice15excel.exe" Set-Alias PowerPoint "C:Program FilesMicrosoft Office 15rootoffice15powerpnt.exe" C:> Excel
  16. 16. .*shのキーバインドにしたいんだけ ど 残念ながらPowerShell自体にはキーバインドの設定はありません が、AutoHotKeyを使って設定出来ます #IfWinActive, ahk_class ConsoleWindowClass ^a::SendInput {HOME} ^e::SendInput {END} ^u::SendInput {ESC} ^p::SendInput {Up} ^n::SendInput {Down} ^l::SendInput {ESC}cls{ENTER} ^k::SendInput {F4} ^f::SendInput {right} ^b::SendInput {left} #IfWinActive
  17. 17. ウィンドウを最大化したいんだけ ど Terminal2やckwを使いましょう! オマケに透過設定もできちゃいますよ
  18. 18. yumやapt-getみたいなのないの? Chocolateyがあります。GitからChromeまで何でも入ります インストール パッケージインストール C:> iex ((new-object net.webclient).DownloadString("http://bit.ly/psChocInstall")) C:> “git”, “pester”| % { cinst $_ }
  19. 19. スタートメニューが ないと嘆く方へ
  20. 20. 全てPowerShellから起動するので す Set-AliasでPowerShellから全て起動すれば何の問題もありません C:> Get-Content $profile | Select-String "Set-Alias" Set-Alias Word "C:Program FilesMicrosoft Office 15rootoffice15winword.exe" Set-Alias Excel "C:Program FilesMicrosoft Office 15rootoffice15excel.exe" Set-Alias PowerPoint "C:Program FilesMicrosoft Office 15rootoffice15powerpnt.exe" C:> Excel
  21. 21. まとめ スタート画面なんて飾りです。偉い人にはそれがわからんのです

×