Power shell 3.0の魅力
Upcoming SlideShare
Loading in...5
×
 

Power shell 3.0の魅力

on

  • 3,010 views

めとb

めとb

Statistics

Views

Total Views
3,010
Views on SlideShare
2,998
Embed Views
12

Actions

Likes
6
Downloads
11
Comments
0

1 Embed 12

https://twitter.com 12

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Power shell 3.0の魅力 Power shell 3.0の魅力 Presentation Transcript

  • PowerShell 3.0の魅 力 ~Windows 8の隠れた主役~ めとべや東京 #1 2013/07/06 @oota_ken
  • 自己紹介 仕事 Jenkinsとかで自動化する PowerShellのBlogを書く 好きなもの シェル SQL 嫌いなもの Excel方眼紙 OTL
  • 僕の最強のデスクトップ スタート画面なんて飾りです。偉い人にはそれがわからんのです
  • PowerShellの魅力
  • 全てがオブジェクト 例: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
  • .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
  • 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
  • その他 ネットワークが遮断された環境でもプログラミングできる(*⌒▽⌒*) Windows 7 以降で標準組み込み Excel方眼紙環境でもExcelのCOMが全部使える コマンドレットの動詞と名詞が標準化されている 最小限のキーワードさえ覚えていれば、補完とインテリセンスでなんとかなる UNIXのコマンドやコマンドプロンプトのように複雑怪奇ではない よくやくCygwinいらなくなった PowerShellのコマンドレット+.NET、COMオブジェクトでほぼ全ての作業が足 りる
  • PowerShell3.0の新機 能
  • 連想配列からのオブジェクト作成 がシンプルに 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
  • Where-ObjectやForEach-Objectの 記法がシンプルに PowerShell 2.0 PowerShell 3.0 C:> get-process | ? { $_.PM -gt 20MB } C:> get-process | ? PM -gt 20MB
  • 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"
  • PowerShell ISEでIntellisenseが有効 に
  • UNIXの.*shな方へ
  • 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
  • .*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
  • ウィンドウを最大化したいんだけ ど Terminal2やckwを使いましょう! オマケに透過設定もできちゃいますよ
  • yumやapt-getみたいなのないの? Chocolateyがあります。GitからChromeまで何でも入ります インストール パッケージインストール C:> iex ((new-object net.webclient).DownloadString("http://bit.ly/psChocInstall")) C:> “git”, “pester”| % { cinst $_ }
  • スタートメニューが ないと嘆く方へ
  • 全て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
  • まとめ スタート画面なんて飾りです。偉い人にはそれがわからんのです