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.

20180123 power shell

395 views

Published on

ITとビジネスの人材育成のトレノケート無料セミナー資料「初めてのPowerShell」

Published in: Software
  • Be the first to comment

20180123 power shell

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

×