Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PowerShell 紹介
Search
tsuda.a
January 11, 2015
0
30
PowerShell 紹介
LT駆動開発 #10 で発表した、簡単な PowerShell の紹介です。
tsuda.a
January 11, 2015
Tweet
Share
More Decks by tsuda.a
See All by tsuda.a
マジカルインクリメントと指数表記
tsudaahr
0
180
バックアップしていますか?
tsudaahr
0
110
RDB以前のファイル設計の話でもしようか(ぇ
tsudaahr
0
120
NPUわからん
tsudaahr
0
170
計算量オーダーの話
tsudaahr
1
380
クラウド初学者が抱える不安について
tsudaahr
0
250
キューとは何か
tsudaahr
0
220
等幅は死んだ(ぇ
tsudaahr
0
93
いくら眺めてもエラーの理由がわからないコードについて
tsudaahr
0
180
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
450
Git: the NoSQL Database
bkeepers
PRO
431
65k
Code Review Best Practice
trishagee
69
19k
A Tale of Four Properties
chriscoyier
160
23k
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.8k
For a Future-Friendly Web
brad_frost
179
9.9k
Typedesign – Prime Four
hannesfritz
42
2.8k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
110
20k
Thoughts on Productivity
jonyablonski
69
4.8k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Transcript
PowerShell 紹介 LTDD #10 @tsuda_ahr
PowerShell とは • Microsoft の Shell Script のようなもの • コマンドプロンプトの後継
(WSH/VBScript の後継) • Windows 7 以降は標準搭載。 • 専用エディタもついてくるよ! PowerShell ISE (Integrated Scripting Environment)
利点 • .net のライブラリが Script のように使えること。
個人的にはこれ一択!
例 $tcp = New-Object System.Net.Sockets.TcpClient try { $tcp.Connect("localhost", 445) Write-Host
("成功") } catch { Write-Host ("失敗") } finally { $tcp.Close() $tcp.Dispose() } 対象の host の TCP ポートを 開いてみる Script .net の ライブラリ
ちまたで言われている利点 • pipe に Object を渡せる • コマンドプロンプト (cmd.exe) とは比較にならない制御が可能
(= 一般的な言語ができることができる) • コマンドプロンプトの後継。 • Azure API などが操作できる。 • Windows Server では一部 PowerShell Script に変換する機能が ある(らしい)
例) object が pipe を渡っているの図 Get-Content .¥sample.csv | ConvertFrom-Csv -Header
@(1..50) | Where {$_."3" -ge 1989} | select "1","2","16","26","30" | Out-GridView sample.csv を読み込み、 csv ファイルとして解釈し 3列目が 1989 以上の行の 1列目,2列目,16列目,26列目,30列目を GridView で表示する
残念な点
1.拡張子とインストールフォルダ
最新のPSのバージョンは現在 “4” 順調に進化しています
しかし拡張子は.ps1のまま
インストールフォルダも v1.0 のまま
2.関係演算子
PERL の場合 $a = 100; if ($a > 1) {
print "True"; }
PowerShell の場合 $a = 100; if ($a –gt 1) {
Write-Host "True"; }
FORTRAN かよ!
参考) FORTRAN 77 の場合 00010 I = 100 00020 IF
(I .GT. 1) THEN 00030 PRINT *, "True" 00040 END IF 00050 END
3.セキュリティ縛り ポリシーがデフォルトのままだと、 Scriptファイル(.ps1) を実行できません
4.コマンドプロンプトに劣る面がある 屈辱の cmd /c mklink たとえば シンボリックリンクを 作るコマンドレットは存在しない。
5.Windows の設定は、変わらず難儀 たとえば、 ここのチェックを入れるための API とかは存在しない
6.コマンドが長い
まとめ • Windows の設定がらみのところでは、まだまだコマンドプロン プト有利なところが結構ある。 • 自前 Script を書く場合は、PowerShell になれるとコマンドプ
ロンプトには戻れない。 • テキスト処理とかも PERL を使ったりすることはなくなった。
みんな PowerShell を使おう!
セッション中にあった質問と回答
質問1) pipe で渡ったオブジェクトの型はわかるのか? 一応わかりますが、パターンマッチとはまではできません(多分)
質問2) PowerShell で Excel は操作できるのか? • できないことはないけれど、Powershell で実施することによる メリットはあまりないよ。何より遅い(汗 powershell
# Excelの起動ほか $excel = New-Object -ComObject Excel.Application $excel.Visible = $false $book = $excel.Workbooks.Open("D:¥sample.xlsx") $sheet = $book.Worksheets.Item("sheet1") # 書き込み $sheet.Range("A1").Cells.Item(1, 1) = "AAA" # 読み込み $a = $sheet.Range("A1").Cells.Item(1, 1).Text Write-Host $a # 閉じる $book.Save() $excel.Quit() # Excel.exe がプロセスに残るのを防ぐために Powershell ごと終了する(ぉぃ exit
質問3) あるフォルダにファイルができたことをトリガーに処 理することができるか? できないことはないです… (実現にはやはり .net のライブラリの力を借ります。 また以下のコードだと複数のファイルが同時に操作された場合に取りこぼします) $watcher =
New-Object System.IO.FileSystemWatcher $watcher.Path = "D:¥test" while ($true) { $result = $watcher.WaitForChanged([System.IO.WatcherChangeTypes]::All) Write-Host $result.ChangeType $result.Name }
ステマ。 来る 2015/2/14 (土) オープンセミナー広島が開催されます。 http://osh-web.github.io/
PowerShell のセッションもあるよ!
この本を書かれた方が来られます!
この機会に是非ご参加ください!