Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
PowerShell 紹介
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
tsuda.a
January 11, 2015
42
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PowerShell 紹介
LT駆動開発 #10 で発表した、簡単な PowerShell の紹介です。
tsuda.a
January 11, 2015
More Decks by tsuda.a
See All by tsuda.a
Git を GUI で使う話
tsudaahr
0
140
マジカルインクリメントと指数表記
tsudaahr
0
290
バックアップしていますか?
tsudaahr
0
170
RDB以前のファイル設計の話でもしようか(ぇ
tsudaahr
0
180
NPUわからん
tsudaahr
0
230
計算量オーダーの話
tsudaahr
1
490
クラウド初学者が抱える不安について
tsudaahr
0
470
キューとは何か
tsudaahr
0
310
等幅は死んだ(ぇ
tsudaahr
0
150
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Bash Introduction
62gerente
615
220k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.7k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
420
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
300
Odyssey Design
rkendrick25
PRO
2
850
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
The Cult of Friendly URLs
andyhume
79
7k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
290
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
440
The agentic SEO stack - context over prompts
schlessera
0
950
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 のセッションもあるよ!
この本を書かれた方が来られます!
この機会に是非ご参加ください!