Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20170721 初めてのPowerShell

538 views

Published on

2017年7月21日グローバルナレッジネットワークセミナー<初めてのPowerShell>資料

Published in: Technology
  • Be the first to comment

20170721 初めてのPowerShell

  1. 1. 初めてのPowerShell グローバルナレッジネットワーク株式会社 横山 哲也
  2. 2. 自己紹介 横山 哲也 (グローバルナレッジネットワーク株式会社) http://www.globalknowledge.co.jp/ 1994年~ ITプロ向けWindows関連教育 2003年~ マイクロソフトMVP (Directory Services/Virtual Machines) 好きなPowerShellコマンドレット ForEach-Object 最近の著書・雑誌記事 ひと目でわかるAzure 「基本から学ぶサーバー&ネットワーク構築」改訂新版(著)日経BP プロが教えるWindows Server 2012システム管理(監修・共著) アスキーメディアワークス グループポリシー逆引きリファレンス厳選92(監修・共著)日経BP ソーシャルメディア ブログ: ヨコヤマ企画 http://yp.g20k.jp/ 2
  3. 3. 概要 1. シェルに求められること 2. PowerShellの特徴 3. コマンドレット操作 4. PowerShell基本文法 5. オブジェクト操作のためのコマンドレット 6. スクリプト実行ポリシー 7. PowerShellモジュール 3
  4. 4. 1. シェルに求められること GUI vs. CUI 対話処理 vs. バッチ処理 従来のシェルとPowerShell 4
  5. 5. シェルに求められること: GUI vs. CUI GUI(Graphical User Interface) 直感的に分かる 繰り返し処理に向かない ミスが多い(手が滑った等) CUI(Character User Interface) 事前学習が必要 繰り返し処理が容易 致命的なミスが少ない (タイプミスはエラー) 5
  6. 6. シェルに求められること: 対話処理 vs. バッチ処理 対話処理 その場で操作できる どんな操作をしたか記憶にないことがある バッチ処理 まとめて操作できる 繰り返し処理ができる 自動実行できる ファイルを作成する必要がある(記録に残しやすい) 6
  7. 7. シェルに求められること: 従来のシェルとPowerShell Windows Explorer コマンド プロンプト (CMD.EXE) Windows Scripting Host(WSH) Windows PowerShell UI GUI CUI CUI CUI 対話処理 ○ △ × ○ バッチ処理 × ○ ○ ○ 制御構造 × △ ○ ○ 命令体系 ― 不統一 VBScript JScript(JavaScript) 統一 オブジェクト処理 × × ○ ○ 開発環境 × × Visual Studio Microsoft Office Visual Studio ISE(標準機能) 7
  8. 8. 2. PowerShellの特徴 .NET Frameworkと統合 .NET Frameworkの全オブジェクトにアクセス可能 COMオブジェクトへのアクセス可能 オブジェクト指向 実行結果はオブジェクトで出力(テキストではない) 統一したコマンド表現 コマンドレット 学習が容易 スクリプト言語として利用可能 スクリプト編集ツール デバッグ機能 セキュリティを考慮 8
  9. 9. 3. コマンドレット操作 PowerShellの起動 コマンドレットの形式 自動補完 9
  10. 10. コマンドレット操作: PowerShellの起動 スタートメニューから コマンドラインから PowerShell PowerShell_ISE 10
  11. 11. コマンドレット操作: コマンドレットの形式 コマンドレットの形式 動詞-名詞 [-パラメータ [値]] [-スイッチパラメータ] … 動詞は機能、名詞は操作の対象 大小文字は区別しない # はコメント記号 #以降の行はコメント扱い ` (バッククォート)…行継続記号 1行が画面に収まりきらない場合 コードの可読性を向上 変数は $ からはじめる コマンドレットの結果(オブジェクト)を格納 11
  12. 12. コマンドレット操作: コマンドレットの形式(続き) フォルダとファイルの一覧表示 Get-ChildItem –Path c:¥windows エイリアスの表示…Get-Alias 従来のコマンドを使用可能にするため (ただし文法はPowerShellの規則に従う) × dir /s ○ dir –Recurse (dirはGet-ChildItemのエイリアス) コマンドレットの一覧表示…Get-Command ヘルプ…Get-Help (エイリアスはHelp) Get-Help Get-Eventlog Get-Help Get-EventLog -Detailed…詳細説明 Get-Help Get-Eventlog -Examples…使用例の表示 12
  13. 13. コマンドレット操作: 自動補完 タブキーで自動補完 タブ…次の候補 Shift-タブ…前の候補 自動補完の対象 コマンドレット名 オプションパラメーター キーワード ファイルとフォルダー 13
  14. 14. 4. PowerShell基本文法 プロパティとメソッド 変数 PowerShellの演算子 スクリプトブロック 関数 繰り返しと条件分岐 14
  15. 15. PowerShell基本文法: プロパティとメソッド オブジェクト PowerShell コマンドレットの実行結果 オブジェクトの種類に応じた型を持つ 型に対応したデータと機能を保持する デフォルト表示文字列を持つ (実行結果の表示などに利用) プロパティ(データ) オブジェクトが保持する内部データへのアクセス窓口 オブジェクト.プロパティ名で指定 メソッド(機能) オブジェクトが持つ機能 オブジェクト.メソッド名(引数1, 引数2, …) オブジェクトとメソッドに依存した0以上の引数 15
  16. 16. PowerShell基本文法: プロパティとメソッド(使用例とパイプ処理) 日付オブジェクトのプロパティとメソッド 1. 現在日時のオブジェクトを取得 - $currentDate = Get-Date 2. 取得したオブジェクトのメンバを表示 - Get-Member –InputObject $currentDate 3. Yearプロパティから年データを取得 - $currentDate.Year 4. AddDaysメソッドで10日後の日付を計算 - $currentDate.AddDays(10) パイプ…出力オブジェクトを次のコマンドレットの入力に $currentDate | Get-Member 16
  17. 17. PowerShell基本文法: 変数 変数名…$で始まり、英数字_(アンダースコア)が続く オブジェクトを格納 動的型変換 明示的な型指定…[型名]変数名 型名は.NET Frameworkに準拠(エイリアスあり) 配列を代入すると自動的に配列になる $x = Get-ChildItem $x[0]…最初の要素(配列でない場合も可) $x.Length…要素の数 17
  18. 18. PowerShell基本文法: PowerShellの演算子 算術演算子…数値に関する演算 +、-、*、/、% 例: $x=40+20 文字列演算子…文字列操作、検索、置き換え +(連結)、*(文字列反復)、-replace(文字列置換)、 -like(ワイルドカードマッチ)など 例1: $x = "Hello"+"World“ 例2: $x = "abcd" –replace "bc","123" 代入演算子…変数への値の代入 =(代入)、+=(追加)、-=(削除)、*=(乗算)、/=(除算) 例1: $a=10 例2: $a+=5 18
  19. 19. PowerShell基本文法: PowerShellの演算子(続き) 比較演算子…等価、大小関係 -eq(等しい)、-ne(等しくない)、-gt(より大きい)、 -lt(より小さい)、-ge(以上)、-le(以下)など 論理演算子…論理積、論理和、排他的論理和、否定 -and(論理積)、-or(論理和)、-xor(排他的論理和)、 -not(否定) ビット演算子…ビット単位の論理演算 -band(ビット単位の論理積)、 -bor(ビット単位の論理和)など その他 Help About_Operatorsで確認可能 19
  20. 20. 5. オブジェクト操作のためのコマンドレット ForEach-Object Where-Object Sort-Object Select-Object 20
  21. 21. オブジェクト操作のためのコマンドレット: ForEach-Object パイプを通して入力された各オブジェクトにアクセス アクセスしたオブジェクトは $_ 自動変数に格納される 21 Get-ChildItem -Path C:¥Windows¥*.exe | ForEach-Object {$_.Name} オブジェクト $_ $_ $_ $_ 各オブジェクトに アクセス
  22. 22. オブジェクト操作のためのコマンドレット: Where-Object パイプ入力から、指定条件にあるオブジェクトを選択 アクセスしたオブジェクトは $_ 自動変数に格納 比較演算を使用して選択 以下の表記も可 Get-ChildItem -Path C:¥Windows¥* | Where-Object{ $_.Length –ge 1MB } オブジェクト $_ $_ $_ $_ 各オブジェクトに アクセス 22 Get-ChildItem -Path C:¥Windows¥* |? Length –ge 1MB
  23. 23. オブジェクト操作のためのコマンドレット: Sort-Object パイプ入力から、指定プロパティ値に基づき並べ替える スイッチパラメータ -Descending…降順に並べ替え(既定は昇順) -Unique…重複を取り除き、一意なメンバーを返す 23 Get-ChildItem -Path C:¥Windows¥* | Sort-Object -Property Length -Descending オブジェクト 各オブジェクトに アクセス 4 3 2 1
  24. 24. オブジェクト操作のためのコマンドレット: Select-Object パイプ入力から、各オブジェクトの指定プロパティを選択 スイッチパラメータ -First…オブジェクト配列の先頭からの個数を指定 -Last…オブジェクト配列の末尾からの個数を指定 -Unique…重複したプロパティ値を取り除く Get-ChildItem -Path C:¥Windows¥* | Select-Object Name , Length オブジェクト Name,Length 各オブジェクトに アクセス Name,Length Name,Length 24
  25. 25. 6. スクリプト実行ポリシー 不用意にスクリプトを実行しない仕組み 実行ポリシーの種類 Restricted(既定) AllSigned Remote Signed(おすすめ) Unrestricted Bypass スコープ Process CurrentUser LocalMachine(既定) ポリシーの変更コマンドレット[管理者として実行] Set-ExecutionPolicy 25
  26. 26. 7. PowerShellモジュール PowerShellの拡張機能 Import-Moduleコマンドレットで組み込み Windows Server 2012以降は自動実行 例: Import-Module ServerManager モジュール名はフォルダー名(大文字小文字の区別なし) 主なモジュール ServerManager ActiveDirectory Hyper-V 26
  27. 27. PowerShellモジュール: ServerManager モジュール Windows Server用コマンドレット 役割や機能の追加、削除を行う Import-Module ServerManager 例: Get-WindowsFeature Add-WindowsFeature Remove-WindowsFeature 27
  28. 28. PowerShellモジュール: Active Directory モジュール Active Directory用コマンドレット 名詞がADで始まる Get-Command -Noun AD* Import-Module ActiveDirectory PS C:¥Users¥Administrator> Get-Command -Noun AD* | Select-Object Name Name ---- Add-ADComputerServiceAccount Add-ADDomainControllerPasswordReplicationPolicy Add-ADFineGrainedPasswordPolicySubject Add-ADGroupMember Add-ADPrincipalGroupMembership Clear-ADAccountExpiration Disable-ADAccount ... 28
  29. 29. PowerShellモジュール: Active Directory モジュール(例) ドメインユーザーの作成  New-ADUser ドメインユーザー情報の取得  Get-ADUser - Filter ドメインユーザーの設定  Set-ADUser - Identity ドメインユーザーのグループ追加と削除  Add-ADPrincipalGroupMembership - Identity - MemberOf  Remove-ADPrincipalGroupMembership - Identity - MemberOf 29
  30. 30. PowerShellモジュール: Hyper-Vモジュール Hyper-V用コマンドレット セット 名詞がVMで始まる Get-Command -Noun VM* Import-Module Hyper-V 例: New-VM Start-VM Stop-VM Set-VMSwitch 動作中の全仮想マシンをシャットダウン 30 Get-VM |? State -eq “Running“ | ForEach-Object {Stop-VM $_}
  31. 31. まとめ 1. シェルに求められること 2. PowerShellの特徴 3. コマンドレット操作 4. PowerShell基本文法 5. オブジェクト操作のためのコマンドレット 6. スクリプト実行ポリシー 7. PowerShellモジュール 31
  32. 32. グローバルナレッジネットワークのサービス紹介 PowerShell関連の教育コース Windows PowerShell コマンド・スクリプト入門 ~Windows Server 2012R2/2016対応~ Windows Serverの管理系教育コース Windows Server 2012 システム管理基礎 (前編) Windows Server 2012 システム管理基礎 (後編) Active Directory最小構成実践 その他マイクロソフト公式トレーニング 32
  33. 33. 新ブランド "TRAINOCATE" アジアでのブランド名を変更 TRAINOCATE (トレノケート) 人材育成 "Training" + 提唱者 "Advocate"  日本国内は当面の間「グローバルナレッジネットワーク株式会社」 としての営業を継続 33

×