第5回 PowerShell勉強会 2015/5/9 13:00-18:00 サイト
waka(若林)さん
かなりの初級向けの内容だが資料としてまとめておきたかった 普段はSIerの下請けでバックアップの設計や障害監視担当
PowerShellはコマンドプロンプトやWSHに代わる 最新バージョンは4.0 処理のパイプラインはテキストではなくオブジェクトでやりとりをする Linuxのshellユーザ用にエイリアスが用意されている PSの比較演算子はDOS記法由来なので-eqとかになっているそうな 現在のセッションで割り当て済みの変数の一覧はGet-Variableで確認できる
for each構文はパイプ時にはForEach-Object(%)がある workflow構文はバックグランド実行や再起動後も実行継続すりようなことが指定できる configuration構文はDSCで使う PSはエラーが発生しても止まらないので止めたい場合は
$ErrorActionPreference = "Stop"
PSはコメントベースヘルプがある。ブロックコメントにキーワードを埋め込む 参考 新しいコマンドレットを使う場合はバージョン指定をしてもいいかもしれない
PSのバージョナップとかよくやるのか
Execution Policyは設定しないといけないが 2012R2からはデフォルトの値が緩く変更されている
牟田口さん 2015年2月からだいぶ内容変わっている
windows10/windows server2016でPowerShell 5.0がリリースなのでは .Net Framework 4.5とWMF4が必須
プラグインでNugetやPowerShellGetやChocolaty, MSI/MSUなどと連携可能 自作も可能 DSCでパッケージインストールの記述がしやすくなる PowerShellGetはPSモジュールの依存関係の解決 コマンドは*-Module
hiddenメソッドはインテリセンスが効かないメソッド。用途不明 実行方法
$x = [クラス名]::New()
$x = New-Object クラス名 # 実装予定??
c#と同じ呼び出しかた[列挙体]::値
c#のusingみたいなことができるようになった アンドキュメントなので詳細は不明
Desired State Configuration PowerShell版Chef
DSC Resourceの拡張 PowerShellGetを利用してインストールする リポジトリ
複数のサーバについて依存関係を記述することができる DSC単独でオーケストレーションみたいなことができるかも?
Chef Provisioningみたい??
Local Configuration Manager 分割したconfiguration単位でPULL型PUSH型と分けることができるようになる
Publish-DscConfigurationはdry-runみたいな? クラス構文によるDSCリソースの記述ができる
32bitのプロセス対応 ISE対応
Invoke-ScriptAnalyzer エイリアスを使うなとかの静的解析が実行できる ISEのアドオンとして提供される予定?
自動の構文解析ツールでMicrosoft Researchの 構文解析のPS実装 法則を見つけてルールを抽出してくれる 自分でサンプルデータを渡してルールを指定できる(ConvertFrom-String)
- シンボリックリンク
- Zip
- ゴミ箱を空にできる
PowerShellの候補が方向キーで動き回れるようになってる
@posauneさん, 前川さん
- 静的片付けではない
- Resharperがない
- エディタが貧弱
- 変数に$をつける文化が苦手
でもDOSは使いたくない PowerShellモジュールをC#で作ればいいんだ!! c#でdllを作ってPSからインポート
pscxとかよく使っているそうな 5.0で追加される機能に近しいことはpscxでできる
- System.Management.AutomationのPSCmdletを継承する
- Cmdlet = Class
- Cmdlet属性をつける
- Import-Moduleでdllを読みこむ
C#erの人はこう思うらしい C#とVisual Studioわからん。つまらん。 C#でモジュールとか作らん。
動機
- 大規模なPSを作るときにコンパイルがあると便利
- C#脳で低級なPowerShellの記述は辛い
PS Analyzerができれば改善される? PSで準備されていることをC#で複雑に焼き直している そこまでしてWindows選びたくない 変にC#が使えてしまう弊害 複雑なスクリプト書くなら細かいコマンド作って テストコード書けばいいのに
監査とかで特定ユーザのメールボックスを検索するときに PSで自動化すると便利らしい GUIでできないがCUIだとできるということ
HP/MPなくなった 興味ない
Share PointとかだとC#とかでカスタマイズするのが 王道だが運用レベルならPowerShellも検討してもいいかも
Team Foundation Serverは構成管理やAgile・Scrumも包括している
Agileの取り組みで扱わなくていいの??
さけ(pは読まない)
リポジトリ
PowerShellで書かれたビルド自動化ツール
GradleとかRakeみたいな
PowerShellは途中でコマンドが失敗しても次に行ってしまう(本日二回目)
exec
経由で呼び出す
配布したPowerShellが環境によって動かない
Set-ExecutionPolicy
解
powershell.exe -noprofile -ExecutionPolicy unrestricted -Command 'echo hoge'
Azureで独自ドメイン+httpsは辛いらしい
かなりOSSの元でFBもらいながら開発されている。 PowerShellは細かいところのコマンドがないので あと2,3回くらいメジャーアップデートしたら使い物になるのか。 後半のプロダクトに偏った内容は苦行。 Linux・Unixはいいですね。 C#erの話ではWindowsのDevOpsはオンプレでは辛いと感じた。 難しいところはAzureに任せて繋ぎをPowerShellといった ところが落としどころか。 オンプレWindows一択でPowerShellが主役のDevOpsは罰ゲームに近い。 やりたくない。センスない。 勝手にやってくれ。 後半から吐き気がしてきた。 や、それが仕事なのか。 力の使いどころがそこじゃないんじゃないか感がすごかった。
WSH: だぶりゅえすえいち PowerShell ISE: パワーシェルアイス Nuget: ぬげっと POSH: ぽっしゅ(パワーシェルのことらしい) Chocolaty: ショコラティー、チョコラティー