Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
1
PowerShell が苦手だった男が
PowerShell を愛するようになるまで
ガブ / @gab_km
2014/07/12
第 3 回 PowerShell 勉強会
2
お前だれよ
● 拝承系 SIer 勤務のしがないエンジニア
● .NET 開発者、特に F# 界隈の人
● Python や D 言語にも興味あり
● もちろん PowerShell もね!
3
今日話すこと
● PowerShell が苦手→書けるようになった
● どの辺りが分かれば苦手意識がなくなるか
4
かつての僕
5
かつての僕
この時点 (2011/03/24) の 2 年前なので、 2009 年頃には
PowerShell に手を出していた模様。
6
何が苦手だったか
という感じの躓き方をしていた。
当時の記憶を思い出してみると、
● コマンド体系が bat から結構変わっている ( ように見えた )
● 今まで bat で出来ていたことが、 PowerShell だとすぐに出
来なかった
7
今はどうか
8
今はどうか
これが去年 (2013) の春のこと。
1 年ちょっと、いろんなものを PowerShell で書くようにし
ていたら、それなりに出来るようになってきた。
9
実例その 1
当初 bat で PC の起動時処理 ( メーラーや便利ツールの起動、
ファイルサーバーとの接続など ) を書いていた。
10
実例その 1
当初 bat で PC の起動時処理 ( メーラーや便利ツールの起動、
ファイルサーバーとの接続など ) を書いていた。
              ↓
Python を覚えて、これらの起動時処理を Python で全て書き...
11
実例その 1
当初 bat で PC の起動時処理 ( メーラーや便利ツールの起動、
ファイルサーバーとの接続など ) を書いていた。
              ↓
Python を覚えて、これらの起動時処理を Python で全て書き...
12
実例その 2
13
実例その 2
Chocolatey がなかなか良い感じなんだけど、某拝承系 SIer
の作業環境はプロキシの壁の中。
なので、 chocolatey install がプロキシ経由でも上手く
いくように Pull Request を投げて...
14
実例その 2
Chocolatey がなかなか良い感じなんだけど、某拝承系 SIer
の作業環境はプロキシの壁の中。
なので、 chocolatey install がプロキシ経由でも上手く
いくように Pull Request を投げて...
15
実例その 3
16
実例その 3
# どこのメーカーかはお察し
Get-ChildItem |
Where { $_.Name.StartsWith("MAKERNAME") } |
ForEach { Rename-Item $_ -newname ($(...
17
何が分かって苦手じゃなくなったか
この辺りができるように調べながらやり方を覚えていくことで
PowerShell を書くことが苦手じゃなくなった。
● ファイルの指定と実行
● ファイルに対する操作
● パイプライン操作
18
何が分かって苦手じゃなくなったか
この辺りができるように調べながらやり方を覚えていくことで
PowerShell を書くことが苦手じゃなくなった。
● ファイルの指定と実行
● ファイルに対する操作
● パイプライン操作
もし Power...
19
● ファイルの指定と実行
● ファイルに対する操作
● パイプライン操作
20
ファイルの指定と実行
PS> notitle.ps1
カレントディレクトリに作成した notitle.ps1 というスク
リプトファイル。
これを実行しようと上のように入力してみた。
うまく行けば “ Hello, there!” という...
21
ファイルの指定と実行
PS> notitle.ps1
notitle.ps1 : 用語 'notitle.ps1' は、コマンドレット、関数、スクリ
プト ファイル、または操作可能なプ
ログラムの名前として認識されません。名前が正しく記述...
22
ファイルの指定と実行
PS> notitle.ps1
notitle.ps1 : 用語 'notitle.ps1' は、コマンドレット、関数、スクリ
プト ファイル、または操作可能なプ
ログラムの名前として認識されません。名前が正しく記述...
23
ファイルの指定 (1) 絶対パスを使う
PS> C:myposhnotitle.ps1
24
ファイルの指定 (1) 絶対パスを使う
PS> C:myposhnotitle.ps1
Hello, there!
PS>
これは確実な方法だが、多少冗長な面は否めない。
25
ファイルの指定 (2)'.' を使う
PS> .notitle.ps1
26
ファイルの指定 (2)'.' を使う
PS> .notitle.ps1
Hello, there!
PS>
カレントディレクトリにあるファイルを指定したい場合、パス
の先頭に '.' を付与する。
27
ファイルが実行できない場合
PS> $myScript = “C:myposhnotitle.ps1”
PS> $myScript
ファイルを実行する際、先述の方法では上手くいかない場合が
ある。
28
ファイルが実行できない場合
PS> $myScript = “C:myposhnotitle.ps1”
PS> $myScript
C:myposhnotitle.ps1
PS>
29
ファイルが実行できない場合
PS> $myScript = “C:myposhnotitle.ps1”
PS> $myScript
C:myposhnotitle.ps1
PS>
実行後、周囲に漂うソウジャナイヨ感は、殺伐としたギョー...
30
ファイルの実行 (1) '&' を使う
PS> & $myScript
Hello, there!
PS>
こういう場合、実行したいパスをアンパサンド (&) に渡すこ
とで実行できる。
アンパサンドとパスは、間のスペースの有無にかかわら...
31
ファイルの実行 (2) '.' を使う
PS> . $myScript
Hello, there!
PS>
同じような場面で、ドット (.) を使うことで指定したパスに
あるファイルを実行する。
この方法を「ドットソース形式での読み込み」...
32
ファイルの実行 (2) '.' を使う
PS> . $myScript
Hello, there!
PS>
同じような場面で、ドット (.) を使うことで指定したパスに
あるファイルを実行する。
この方法を「ドットソース形式での読み込み」...
33
● ファイルの指定と実行
● ファイルに対する操作
● パイプライン操作
34
ファイルに対する操作
● コピー
● リネーム
● 削除
ファイルに対して、以下の操作を行いたいことが多かった。
35
ファイルに対する操作
古き良きコマンドプロンプトのコマンドを使えなくはない。
… が、せっかく PowerShell に手を出したんだから、コマン
ドレットを使いたいという意識の高さがあった。
● コピー
● リネーム
● 削除
ファイル...
36
ファイルのコピー (1)
PS> Copy-Item -Path .notitle.ps1 -Destination C:myetc
PS> ls C:myetc | where Name -eq notitle.ps1
ディレクトリ :...
37
ファイルのコピー (2)
PS> Get-ChildItem C:myetc | % { $_.Name }
PS> Copy-Item -Path C:myposhn* -Destination C:myetc
PS> Get-Chil...
38
ファイルのコピー (2)
PS> Get-ChildItem C:myetc | % { $_.Name }
PS> Copy-Item -Path C:myposhn* -Destination C:myetc
PS> Get-Chil...
39
ファイルのリネーム
PS> ls | % { $_.Name }
notitle.ps1
PS> Rename-Item -Path .notitle.ps1 -NewName foobar.ps1
PS> ls | % { $_.Nam...
40
ファイルの削除
PS> ls | % { $_.Name }
notitle.ps1
PS> Remove-Item .notitle.ps1
PS> ls | % { $_.Name }
PS>
Remove-Item を使う。
41
ファイルの削除
PS> ls | % { $_.Name }
notitle.ps1
PS> Remove-Item .notitle.ps1
PS> ls | % { $_.Name }
PS>
Remove-Item を使う。
Pow...
42
● ファイルの指定と実行
● ファイルに対する操作
● パイプライン操作
43
パイプライン操作
「 PowerShell といえばパイプライン、
44
パイプライン操作
「 PowerShell といえばパイプライン、
 パイプラインといえば F# PowerShell 」という関係。
45
パイプライン操作
の 2 つに大別されると思う。 (※ 個人の感想です )
● フィルター
● 逐次
「 PowerShell といえばパイプライン、
 パイプラインといえば F# PowerShell 」という関係。
パイプラインでやり...
46
パイプライン操作 - フィルター
@("hoge", "fuga", "bar") | where { $_.Length -eq 4 }
# "hoge"
# "fuga"
パイプラインの基本操作といえば、やはりフィルター。
条件ブロッ...
47
パイプライン操作 - フィルター
@("hoge", "fuga", "bar") | where { $_.Length -eq 4 }
# "hoge"
# "fuga"
パイプラインの基本操作といえば、やはりフィルター。
条件ブロッ...
48
パイプライン操作 - 逐次 (1)
@("hoge", "fuga", "bar") | foreach { $_.ToUpper() }
# "HOGE"
# "FUGA"
# “BAR”
パイプラインで渡されたコレクションの各要素に対...
49
パイプライン操作 - 逐次 (2)
@(1 .. 3) | % { $_ + 2 }
# 3
# 4
# 5
foreach には % という略記号が用意されているので便利。
50
今日話したこと
● PowerShell が苦手→書けるようになった
● どの辺りが分かれば苦手意識がなくなるか
51
今日話したこと
● PowerShell が苦手→書けるようになった
● どの辺りが分かれば苦手意識がなくなるか
● ファイルの指定と実行
● ファイルに対する操作
● パイプライン操作
52
今日話したこと
● PowerShell が苦手→書けるようになった
● どの辺りが分かれば苦手意識がなくなるか
● ファイルの指定と実行
● ファイルに対する操作
● パイプライン操作
すごい PowerShell いっぱい遊ぼう!
Próxima SlideShare
Cargando en…5
×

PowerShellが苦手だった男がPowerShellを愛するようになるまで

24.948 visualizaciones

Publicado el

PowerShell とのお付き合い事始めです。初心者が PowerShell で躓くところ(実際引っかかった)を実体験を踏まえて紹介します。(主催者により記述編集)

Publicado en: Tecnología
  • Download or read that Ebooks here ... ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... .........................................................................................................................
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí

PowerShellが苦手だった男がPowerShellを愛するようになるまで

  1. 1. 1 PowerShell が苦手だった男が PowerShell を愛するようになるまで ガブ / @gab_km 2014/07/12 第 3 回 PowerShell 勉強会
  2. 2. 2 お前だれよ ● 拝承系 SIer 勤務のしがないエンジニア ● .NET 開発者、特に F# 界隈の人 ● Python や D 言語にも興味あり ● もちろん PowerShell もね!
  3. 3. 3 今日話すこと ● PowerShell が苦手→書けるようになった ● どの辺りが分かれば苦手意識がなくなるか
  4. 4. 4 かつての僕
  5. 5. 5 かつての僕 この時点 (2011/03/24) の 2 年前なので、 2009 年頃には PowerShell に手を出していた模様。
  6. 6. 6 何が苦手だったか という感じの躓き方をしていた。 当時の記憶を思い出してみると、 ● コマンド体系が bat から結構変わっている ( ように見えた ) ● 今まで bat で出来ていたことが、 PowerShell だとすぐに出 来なかった
  7. 7. 7 今はどうか
  8. 8. 8 今はどうか これが去年 (2013) の春のこと。 1 年ちょっと、いろんなものを PowerShell で書くようにし ていたら、それなりに出来るようになってきた。
  9. 9. 9 実例その 1 当初 bat で PC の起動時処理 ( メーラーや便利ツールの起動、 ファイルサーバーとの接続など ) を書いていた。
  10. 10. 10 実例その 1 当初 bat で PC の起動時処理 ( メーラーや便利ツールの起動、 ファイルサーバーとの接続など ) を書いていた。               ↓ Python を覚えて、これらの起動時処理を Python で全て書き 直した。 (Python の勉強に役立った )
  11. 11. 11 実例その 1 当初 bat で PC の起動時処理 ( メーラーや便利ツールの起動、 ファイルサーバーとの接続など ) を書いていた。               ↓ Python を覚えて、これらの起動時処理を Python で全て書き 直した。 (Python の勉強に役立った )               ↓ PowerShell の勉強のために、起動時処理を PowerShell で 改めて書き直した。
  12. 12. 12 実例その 2
  13. 13. 13 実例その 2 Chocolatey がなかなか良い感じなんだけど、某拝承系 SIer の作業環境はプロキシの壁の中。 なので、 chocolatey install がプロキシ経由でも上手く いくように Pull Request を投げてみた。
  14. 14. 14 実例その 2 Chocolatey がなかなか良い感じなんだけど、某拝承系 SIer の作業環境はプロキシの壁の中。 なので、 chocolatey install がプロキシ経由でも上手く いくように Pull Request を投げてみた。 ※2014/07/12 現在、絶賛放置中
  15. 15. 15 実例その 3
  16. 16. 16 実例その 3 # どこのメーカーかはお察し Get-ChildItem | Where { $_.Name.StartsWith("MAKERNAME") } | ForEach { Rename-Item $_ -newname ($(Get-ItemProperty $_).LastWriteTime.ToString("yyyyMMdd_hhmm") + ".MP4") }
  17. 17. 17 何が分かって苦手じゃなくなったか この辺りができるように調べながらやり方を覚えていくことで PowerShell を書くことが苦手じゃなくなった。 ● ファイルの指定と実行 ● ファイルに対する操作 ● パイプライン操作
  18. 18. 18 何が分かって苦手じゃなくなったか この辺りができるように調べながらやり方を覚えていくことで PowerShell を書くことが苦手じゃなくなった。 ● ファイルの指定と実行 ● ファイルに対する操作 ● パイプライン操作 もし PowerShell に苦手意識を感じている方でも、この 3 つ ができれば、最初の大きなハードルが乗り越えられると思う。
  19. 19. 19 ● ファイルの指定と実行 ● ファイルに対する操作 ● パイプライン操作
  20. 20. 20 ファイルの指定と実行 PS> notitle.ps1 カレントディレクトリに作成した notitle.ps1 というスク リプトファイル。 これを実行しようと上のように入力してみた。 うまく行けば “ Hello, there!” という文字列が表示され る。
  21. 21. 21 ファイルの指定と実行 PS> notitle.ps1 notitle.ps1 : 用語 'notitle.ps1' は、コマンドレット、関数、スクリ プト ファイル、または操作可能なプ ログラムの名前として認識されません。名前が正しく記述されていることを確認 し、パスが含まれている場合 はそのパスが正しいことを確認してから、再試行してください。 発生場所 行 :1 文字 :1 + notitle.ps1 + ~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (notitle.ps1:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException PS>
  22. 22. 22 ファイルの指定と実行 PS> notitle.ps1 notitle.ps1 : 用語 'notitle.ps1' は、コマンドレット、関数、スクリ プト ファイル、または操作可能なプ ログラムの名前として認識されません。名前が正しく記述されていることを確認 し、パスが含まれている場合 はそのパスが正しいことを確認してから、再試行してください。 発生場所 行 :1 文字 :1 + notitle.ps1 + ~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (notitle.ps1:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException PS> ターミナル上では補完が効く話ではあるけれど、単純に .bat から .ps1 に書き換えてる時にこのつらみが…。
  23. 23. 23 ファイルの指定 (1) 絶対パスを使う PS> C:myposhnotitle.ps1
  24. 24. 24 ファイルの指定 (1) 絶対パスを使う PS> C:myposhnotitle.ps1 Hello, there! PS> これは確実な方法だが、多少冗長な面は否めない。
  25. 25. 25 ファイルの指定 (2)'.' を使う PS> .notitle.ps1
  26. 26. 26 ファイルの指定 (2)'.' を使う PS> .notitle.ps1 Hello, there! PS> カレントディレクトリにあるファイルを指定したい場合、パス の先頭に '.' を付与する。
  27. 27. 27 ファイルが実行できない場合 PS> $myScript = “C:myposhnotitle.ps1” PS> $myScript ファイルを実行する際、先述の方法では上手くいかない場合が ある。
  28. 28. 28 ファイルが実行できない場合 PS> $myScript = “C:myposhnotitle.ps1” PS> $myScript C:myposhnotitle.ps1 PS>
  29. 29. 29 ファイルが実行できない場合 PS> $myScript = “C:myposhnotitle.ps1” PS> $myScript C:myposhnotitle.ps1 PS> 実行後、周囲に漂うソウジャナイヨ感は、殺伐としたギョームにおける 一服の清涼剤となる。 # ならない
  30. 30. 30 ファイルの実行 (1) '&' を使う PS> & $myScript Hello, there! PS> こういう場合、実行したいパスをアンパサンド (&) に渡すこ とで実行できる。 アンパサンドとパスは、間のスペースの有無にかかわらず動作 する。
  31. 31. 31 ファイルの実行 (2) '.' を使う PS> . $myScript Hello, there! PS> 同じような場面で、ドット (.) を使うことで指定したパスに あるファイルを実行する。 この方法を「ドットソース形式での読み込み」と言う。
  32. 32. 32 ファイルの実行 (2) '.' を使う PS> . $myScript Hello, there! PS> 同じような場面で、ドット (.) を使うことで指定したパスに あるファイルを実行する。 この方法を「ドットソース形式での読み込み」と言う。 詳しくは検索するか、会場にいる PowerShell のこわい人た ちに聞いてみてください ( ◜◡◝ )
  33. 33. 33 ● ファイルの指定と実行 ● ファイルに対する操作 ● パイプライン操作
  34. 34. 34 ファイルに対する操作 ● コピー ● リネーム ● 削除 ファイルに対して、以下の操作を行いたいことが多かった。
  35. 35. 35 ファイルに対する操作 古き良きコマンドプロンプトのコマンドを使えなくはない。 … が、せっかく PowerShell に手を出したんだから、コマン ドレットを使いたいという意識の高さがあった。 ● コピー ● リネーム ● 削除 ファイルに対して、以下の操作を行いたいことが多かった。
  36. 36. 36 ファイルのコピー (1) PS> Copy-Item -Path .notitle.ps1 -Destination C:myetc PS> ls C:myetc | where Name -eq notitle.ps1 ディレクトリ : C:myetc Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2014/07/11 23:42 31 notitle.ps1 PS> とりあえず、 Copy-Item を使う。
  37. 37. 37 ファイルのコピー (2) PS> Get-ChildItem C:myetc | % { $_.Name } PS> Copy-Item -Path C:myposhn* -Destination C:myetc PS> Get-ChildItem C:myetc | % { $_.Name } Copy-Item の -Path パラメータ、ワイルドカードをmgmg してくれるので、以下のような使い方ができる。
  38. 38. 38 ファイルのコピー (2) PS> Get-ChildItem C:myetc | % { $_.Name } PS> Copy-Item -Path C:myposhn* -Destination C:myetc PS> Get-ChildItem C:myetc | % { $_.Name } notitle.ps1 nanimoyarukishinai.txt PS> Copy-Item の -Path パラメータ、ワイルドカードをmgmg してくれるので、以下のような使い方ができる。
  39. 39. 39 ファイルのリネーム PS> ls | % { $_.Name } notitle.ps1 PS> Rename-Item -Path .notitle.ps1 -NewName foobar.ps1 PS> ls | % { $_.Name } foobar.ps1 PS> こちらも、とりあえず Rename-Item を使う。
  40. 40. 40 ファイルの削除 PS> ls | % { $_.Name } notitle.ps1 PS> Remove-Item .notitle.ps1 PS> ls | % { $_.Name } PS> Remove-Item を使う。
  41. 41. 41 ファイルの削除 PS> ls | % { $_.Name } notitle.ps1 PS> Remove-Item .notitle.ps1 PS> ls | % { $_.Name } PS> Remove-Item を使う。 PowerShell は「動詞 - 目的語」という名前でコマンドレッ トが定義されており、直感的に探しやすい。
  42. 42. 42 ● ファイルの指定と実行 ● ファイルに対する操作 ● パイプライン操作
  43. 43. 43 パイプライン操作 「 PowerShell といえばパイプライン、
  44. 44. 44 パイプライン操作 「 PowerShell といえばパイプライン、  パイプラインといえば F# PowerShell 」という関係。
  45. 45. 45 パイプライン操作 の 2 つに大別されると思う。 (※ 個人の感想です ) ● フィルター ● 逐次 「 PowerShell といえばパイプライン、  パイプラインといえば F# PowerShell 」という関係。 パイプラインでやりたい操作といえば
  46. 46. 46 パイプライン操作 - フィルター @("hoge", "fuga", "bar") | where { $_.Length -eq 4 } # "hoge" # "fuga" パイプラインの基本操作といえば、やはりフィルター。 条件ブロックを渡した Where-Object を通すことで、その 条件にマッチした要素だけが残る。
  47. 47. 47 パイプライン操作 - フィルター @("hoge", "fuga", "bar") | where { $_.Length -eq 4 } # "hoge" # "fuga" パイプラインの基本操作といえば、やはりフィルター。 条件ブロックを渡した Where-Object を通すことで、その 条件にマッチした要素だけが残る。 $_ はパイプライン先で要素を指す変数。 パイプライン操作を覚え始めた頃は、何故か覚えられなくてい つもぐぐっていた…。
  48. 48. 48 パイプライン操作 - 逐次 (1) @("hoge", "fuga", "bar") | foreach { $_.ToUpper() } # "HOGE" # "FUGA" # “BAR” パイプラインで渡されたコレクションの各要素に対し て、 ForEach-Object に渡したブロックの処理を行う。 皆さんがお使いの関数型言語でいうところの、 map や iter と だいたい同じ役割になる。
  49. 49. 49 パイプライン操作 - 逐次 (2) @(1 .. 3) | % { $_ + 2 } # 3 # 4 # 5 foreach には % という略記号が用意されているので便利。
  50. 50. 50 今日話したこと ● PowerShell が苦手→書けるようになった ● どの辺りが分かれば苦手意識がなくなるか
  51. 51. 51 今日話したこと ● PowerShell が苦手→書けるようになった ● どの辺りが分かれば苦手意識がなくなるか ● ファイルの指定と実行 ● ファイルに対する操作 ● パイプライン操作
  52. 52. 52 今日話したこと ● PowerShell が苦手→書けるようになった ● どの辺りが分かれば苦手意識がなくなるか ● ファイルの指定と実行 ● ファイルに対する操作 ● パイプライン操作 すごい PowerShell いっぱい遊ぼう!

×