Save 37% off PRO during our Black Friday Sale! »

PowerShell - When

C61c4df7cb3f2da2b4a7e7fe08bca7e1?s=47 guitarrapc
October 12, 2014

PowerShell - When

Looking into scenes to use PowerShell when Developing.
- NOT how to use PowerShell.
- But When to use PowerShell.

C61c4df7cb3f2da2b4a7e7fe08bca7e1?s=128

guitarrapc

October 12, 2014
Tweet

Transcript

  1. Oct-11/2014 第4回PowerShell勉強会@大阪

  2. @Job @Private http://tech.guitarrapc.com @guitarrapc_tech

  3. None
  4. None
  5. How PowerShell をどう使うのか?

  6. How? No, it should be When. はぅはぅ

  7. When PowerShell をいつ使うのか?

  8. 開発者にも使えるタイミングがあるんじゃないか見てみよう

  9. 使えそう おすすめしません 向き、不向き

  10. None
  11. None
  12. None
  13. cmd.exe や Native.exe の問題点  引数がカオス(というか何を持っているか把握むずかちぃ)  状態に応じて引数を変化させるのすら困難  変化させても内部で対応してるの?対応させたくてもつらぽ

    net use の引数? mklink の引数? 誰かが作った.exeの引数?
  14.  動的に変化する状態 動的にパラメータを組み合わせる  PowerShell はパラメータが連想名で指定しやすいのが特徴 # -Path には、パスを渡すことが分かるかもかも Get-ChildItem

    –Path c:¥hogemoge
  15. None
  16. None
  17. None
  18. $service = Get-Service $iis = Get-Service IISAdmin Set-Service IISAdmin -StartupType

    Automatic Restart-Service IISAdmin -Force
  19. None
  20. .NET SDK が公開されている  PowerShell でも操作可能 PowerShell はWindows 管理に向いているのは確か 

    でも cmdに変わるシェルも目指しているんだよぉ (できてないけど)
  21. でも本当に実行「するべき」かは選んでね! さくっと書いてコンパクトなデータを扱うには向いてる 高速な動作、大量のデータ、バイナリ処理は苦手

  22. 開発環境に合わせて良きように Hyper-V を普段止めておいて、必要な時だけ起動?  サービス触れば一瞬ですね Jenkins が正常に動作しなかったりする? => Gitプロセス全部殺して、サービス起動したり

  23. None
  24. 本当に必要なことは何ですか? 設計、コーディング 頑張らずに済ませたいこと多いぉ ライブラリ導入、テスト、ビルド、リリース

  25. だから仕組み/SaaS を利用しますよね? ライブラリ導入 : パッケージマネージャー ビルド : Continuous Integration リリース

    : NuGet / zip
  26. 以外とみぢかな PowerShell ライブラリ導入 : NuGet ビルド : AppVayor リリース :

    NuGet / PowerShell
  27. Package Manager Console ライブラリやCmdletの導入 / Init.ps1 で PowerShellモジュール配布も $dte 可愛いよ$dte

    だれか VS Macro を $dte でやってー (^ω^) #macroオワコン
  28. None
  29. None
  30. AppVayor SaaS 型の CIサービス .NET に特化してていい感じ!(Cmdlet もビルドokだったり)

  31. MSBuildをPowerShell で制御してて表示はPowerShellだったりね

  32. NuGet リリース Zip 生成してダウンロードしてもらったり

  33. ビルドと NuGet リリースを連動 (GUI や yaml で指定可能)

  34. PowerShell でビルド生成物をZipとか 例 : KanColleViewer 1. 指定拡張子でフィルタ 2. フォルダ構造をこぴって 3.

    一気にZipしちゃう .NET標準クラスなので外部依存しにゃい
  35. 開発に集中したい!だからそれ以外はお任せ ビルド手動でやってるの?ふぇぇ、CIしようよ! AppVayor いいよ、おすすめ cmdのコマンドも使えるけど、PowerShell いけるよ

  36. None
  37. cmd.exe のカオスを極めしコマンド群と混沌と化した引数共  PowerShell で記述を一元化、パラメータ明示  自動化をしやすく、調整しやすく Windows認証の自動化とかつらぽよ  PSCredential

    で認証情報の自動化も容易に GUIと同様の操作が、CUIで自動化できるように
  38. None
  39. タスクスケジューラは 厄介 Windows 自動化で最もめんどくさく罠が多いのがこれ PowerShell を使ってタスク登録の自動化すると?  ちょっと楽になれるかも

  40. None
  41. 問題: hoge というタスクを ¥ (ルート) に作成。 fuga というタスクを ¥hoge¥fuga のパスに作成しようとすると、

    fuga タスクは登録できる? 2択: A. 登録できる / B. 登録できない
  42. None
  43. ユーザーで管理者実行するように登録すると? 登録、変更のたびにパスワード入力を求められる バッチ処理の時間変更する  毎回認証聞かれる  100回ぐらいやる  面倒すぎて禿げちゃう

  44. タスクスケジューラの本体はファイルとレジストリ タスクスケジューラを何かの拍子でファイルから直接消したり? レジストリを触ったり? 突然の修復不可能な死

  45. スケジューラタスクのUIから触らないと死亡率高い スケジューラタスクのUIは、裏でNTFSとレジストリを操作してる UIを通して操作しないと不整合を起こしたり! 修復不可能な状況に簡単になれるのでオススメ

  46. PowerShell は逆に安全に省力化? Valentia でサポートしたりしてます https://github.com/guitarrapc/valentia/wiki/TaskScheduler-Automation $param = @{ execute =

    "cmd.exe" taskname = "hoge" ScheduledAt = [datetime]::Now Once = $true Disable = $false } Set-ValentiaScheduledTask @param
  47. 開発環境で、タスクスケジューラで設定あるある 登録から変更まで PowerShell でやれば?  開発環境の設定を他にも簡単に移動できるにぇ!  時間や設定変更のたびに認証いれなくていいにぇ! 100回やれば気持ち萎える…. あの辛さを我慢しちゃだめ

  48. None
  49. PowerShell Development PowerShell Tools for Visual Studio PowerShell ISE +

    ISEsteroids
  50. PowerShell.exe is DEAD. (ヤッター 嘘です) ISE は、V5 でリモートファイル編集など強化! PowerShell.exe じゃないと使えなかったCmdlet

    が使用可能に!  Start-Transcript とかね! V5環境で明らかな未来 X : PowerShell.exe コンソールで操作 (オワコン) O : ISE からの処理がより利便性を高いぉ! (ISE以外にVSでもね)
  51. PowerShell ISE はオワコン (イイエ) デバッグ機能がよわかったりー ( 変数の内容みれない!) ウォッチウィンドウないしー Test Plug-in

    ないしー (Pester を MS で支援することが決まったよー) 複数ファイルを縦断的に操作できないー
  52. PowerShell Tools for Visual Studio

  53. ISE の?ほぼ全部あるから。開発面では超え! みんな大好き Visual Studio でPowerShell Script開発ができるように デバッグ機能もVSのまま ウォッチウィンドウもLocalも Test

    Plug-in ある!(Pesterも Psate も) プロジェクトシステムで複数ファイルを縦断的に操作 モジュールも生成 VS のコンテキストメニュー拡張にREPLも (Reformat Scriptとかね)
  54. None
  55. PowerShell ISE + ISEsteroids が唯一の未来 デバッグ機能が強化 (ウォッチウィンドウもどきあるある) 定義された関数 => 参照している箇所への移動が可能に(v2で)

    http://www.powertheshell.com/isesteroids/
  56. PowerShell Charting PowerShellChart https://github.com/guitarrapc/PowerShellUtil/blob/master/PowerShellChart/PowerShellChart.psm1

  57. System.Windows.Forms.DataVisualization.Charting.Chart PowerShell が CUI でみにくい is 本当 なら Chart すればいいじゃない

    http://goodworkaround.com/node/64 をごにょごにょ改造 (ToopTipsとかサポートしたり、モジュール化したり、イメージ保存を簡易化したり)
  58. ふぇぇ….. (O_o)

  59. None
  60. $osloTemperature = [ordered]@{} [xml]$weather = (Invoke-WebRequest -Uri http://www.yr.no/place/Norway/Oslo/Oslo/Oslo/varsel.xml).Content $weather.weatherdata.forecast.tabular.time |

    % { $osloTemperature[$_.from] = $_.temperature.value } # Create chart, add dataset and show New-Chart -Title "Temperature in Oslo" -XInterval 4 -YInterval 2 -Width 1200 ` | Add-Chart -Dataset $osloTemperature -DatasetName “Temperature” -SeriesChartType Spline ` | Show-Chart -SaveImage
  61. None
  62. No more CMD 使えそうな時に使えばいいにょです グラフにするのも自動化簡単だったり

  63. None
  64. None