SlideShare a Scribd company logo
Cloud OS MVP Roadshow 2014 年 6 月 Cloud OS Tech Day!
IT Pro のための
PowerShell スクリプティング
高井 一輝
System Center User Group Japan
自己紹介
• 高井 一輝 (Takai Kazuki)
• 某 ISP 勤務
• クラウドとオンプレミスを組み合わせたインテグレーション
• 見積り、提案書の作成から設計、構築、試験、運用まで
• ネットワーク、サーバ (Windows、Linux)
• System Center User Group Japan (SCUGJ)
• Twitter : @zhuky7 / Facebook : kazuki.takai
• Blog : http://operationslab.wordpress.com/
2
本日の内容
• お話すること
• PowerShell についてのおさらい
– スクリプトを記述するうえで必要となる内容
– スクリプトを実行するために必要となる内容
• スクリプトでやりたいことを実現するためのパーツ
• スクリプトを作成するうえで注意すべきこと
• お話しないこと
• PowerShell コマンドレットの実行方法
• PowerShell Remoting の仕組み
• PowerShell Workflow
• 個々の製品の具体的な管理方法
3
このセッションのゴール
• 簡単な PowerShell スクリプトを作成できる
• 目的に応じてスクリプトを作成できる
• スクリプトの実行、運用ができる
4
本日の環境
• Windows 7 Professional with WMF 4.0
• Windows Server 2012 R2
5
アジェンダ
• Windows PowerShell の基礎
• スクリプトを作成する
• スクリプトの動作を確認する
• スクリプトを展開する
6
Windows PowerShell の基礎
7
PowerShell とは
• Windows で利用可能な新しいシェル / スクリプト言語
• Windows Server 2008 R2 以降で標準搭載
• コマンドプロンプトよりも高度な処理 / 制御が可能
• WSH よりもスクリプトの記述が容易
• Character-based User Interface
• テキストベースではなくオブジェクトベース
• パイプラインを流れるのはオブジェクト
• 豊富なコマンドレット
• PowerShell 本体で用意されているコマンドレット
• Windows Server OS や役割 / 機能に付随するコマンドレット
• 特定の製品やサービスに付随するコマンドレット
8
オブジェクトベース
• コマンドレットの入力、出力はオブジェクト
• コンソールに出力する際は、オブジェクトを文字列に変換している
• パイプラインを流れるのはオブジェクト
• オブジェクトベースなので…
• 一部のプロパティ(列)だけ取り出して加工できる
– アカウントの一覧から “アカウント名” と “最終ログイン日時” だけ取り出す
• プロパティの値を使ってフィルタリングできる
– Windows の役割・機能の一覧から、インストールされているものだけ取り出す
• オブジェクトの状態を操作できる
9
現在の最新版
• PowerShell 4.0
• Windows Server 2012 R2 に標準搭載
• Windows Management Framework 4.0 をインストールすることで、
他の OS でも利用可能
– Windows 7 SP1, Windows Server 2008 R2 SP1, Windows Server 2012
– .NET Framework 4.5 が必要
• PowerShell 5.0 Preview May 2014
• with Windows Management Framework 5.0
– http://www.microsoft.com/en-us/download/details.aspx?id=42936
• includes OneGet, PowerShellGet, and Network Switch
10
基本事項のおさらい
• PowerShell 実行環境
• 演算子
• リダイレクト
• 変数とスコープ
• ヒアドキュメント
• 条件分岐
• 繰り返し
11
PowerShell 実行環境
• PowerShell (PowerShell コンソール)
• powershell.exe
• 通常の PowerShell 環境
• PowerShell ISE (Integrated Scripting Environment)
• powershell_ise.exe
• スクリプト作成 / デバッグ用の環境
– ブレークポイントの設定
– スクリプトの一部を選択して実行 (選択範囲を実行)
12
演算子
• 算術演算子(about_Arithmetic_Operators)
• +, -, *, /, %
• 代入演算子(about_Assignment_Operators)
• =, +=, -=, *=, /=, %=
• 比較演算子(about_Comparison_Operators)
• -eq, -ne, -gt, -lt, -le, -ge, -match, -notmatch, -replace,
-like, -notlike, -in, -notin, -contains, -notcontains,
-bAND, -bOR, -bXOR, -bNOT
• 論理演算子(about_Logical_Operators)
• -and, -or, -xor, -not, !
13
演算子
• リダイレクト演算子(about_Redirection)
• 後述
• 分割/結合演算子(about_Split / about_Join)
• -split, -join
• 型演算子(about_Type_Operators)
• -is, -isnot, -as
• 単項演算子(about_Operators)
• $a++, $a—
• 特殊演算子(about_Operators)
• @(), [], &, |, .., ::, etc...
14
リダイレクト
• リダイレクト演算子
• ストリームの出力先を変更
> 標準ストリームをファイルに保存(既存ファイルは上書き)
>> 標準ストリームをファイルに保存(既存ファイルに追記)
2> エラーストリームをファイルに保存(既存ファイルは上書き)
2>> エラーストリームをファイルに保存(既存ファイルに追記)
2>&1 エラーストリームを標準ストリームと同じ場所へ出力
• ストリーム番号
– 2:エラー 3:警告 4:詳細 5:デバッグ
• 出力文字コードは UTF-16 になるので注意
– 文字コードを変換しつつ出力する場合は、Out-File 等を利用
15
変数とスコープ
• 変数:値を格納するための場所(入れ物)
• $ を先頭に付ける
• 参照可能な範囲(スコープ)がある
– 関数内、ブロック内、スクリプト内で宣言された変数は、原則として外部から
は参照できない
– 可能な限りグローバル変数は使用しない
• 変数のスコープ
• グローバル:どこからでも参照可能
• スクリプト:同一スクリプト内であれば参照可能
• (ローカル):同一ブロックまたは子ブロック内であれば参照可能
• プライベート:同一ブロック内のみ参照可能
16
Demo 01
変数とスコープ
• ドットソース形式での読み込み
• スクリプト内の変数をグローバル変数として取り込む
• . <ScriptPath>
• 変数初期化(定義)用のファイルを分割したい場合等に利用可能
• 通常のスクリプトファイルに対しては使用しない方が良い
– グローバル変数を無暗に増やさない
• 不要な変数がある場合やグローバル変数が競合する場合は、削除する
– Remove-Variable
17
Demo 02
ヒアドキュメント
• スクリプト内に文字列を埋め込むことが可能
• @’
<複数行文字列>
‘@
• @’ の直後に改行が必須
• 主に、テスト時や簡単なスクリプトで使用
• スクリプトに埋め込むことになるので、保守性が悪い
• 本格的に運用(使用)する場合は、外部ファイルから読み込む
18
Demo 03
条件分岐
• if ... elseif ... Else
• if (条件式1) { 条件式1を満たす時の処理 }
elseif (条件式2) { 条件式2を満たす時の処理 }
...
elseif (条件式n) { 条件式nを満たす時の処理 }
else { 条件式1..nを満たさなかった時の処理 }
• switch ステートメント
• switch (チェック対象) {
対象となる値1 { チェック対象が値1の時の処理 ; break ; }
...
対象となる値n { チェック対象が値nの時の処理 ; break ; }
default { チェック対象が1..nの何れでもない時の処理 }
}
19
繰り返し
• while ステートメント
• 条件を満たすまでループし続ける
• do ... while ステートメント
• 条件を満たすまでループし続ける
• for ステートメント
• インデックス(番号)付きで n 回(n 個)繰り返す
• foreach ステートメント
• 集合(コレクション)の要素それぞれに対して処理を行う(名前付き)
• Foreach-Object (%)
• 集合(コレクション)の要素それぞれに対して処理を行う(自動変数)
20
スクリプトを実行するための事前準備
• スクリプトの実行を許可する
• とりあえずスクリプトを作成するコンピューター上で以下を実行
– Set-ExecutionPolicy RemoteSigned
• PowerShell Remoting を有効化する
• リモート接続が必要な場合は以下を実行 (検証環境向け)
– 接続先 : Enable-PSRemoting -Force
– 接続元 : Set-Item WSMan:¥localhost¥Client¥TrustedHosts -Value *
• 詳細は後述
21
Set-ExecutionPolicy
22
Enable-PSRemoting
23
スクリプトを作成する
24
PowerShell スクリプト
• スクリプトファイル
• 基本的に、コンソール上で実行する場合と同様のコマンドを記述
– 必要な処理(コマンドレット等)を列挙
• 人が考えてコマンド実行していた部分は、条件分岐やフィルタ、
エラー処理等として記述
• ps1 ファイルとして保存
– UTF-8 を推奨
• PowerShell ホストを介してスクリプトを実行
– PowerShell Console 上からスクリプトファイルを実行
– powershell.exe 起動時にスクリプトファイルを指定して実行
25
スクリプトに記述する処理
• やりたいことを実現するための処理
• データ(操作対象)を取得
• データ(操作対象)から不要なものを除外(フィルタリング)
• 残った項目(必要なもの)それぞれに対して処理を実行
+
• スクリプトの動作をサポートする処理
• エラーハンドリング
• 外部の状態に応じて処理を実行
• 結果の通知 / ロギング
• 認証情報の取得・保持
• リモート接続・リモート処理
26
スクリプトの記述レベル
• 実行時の状況に合ったスクリプトを作成、記述する
• システムが自動で実行する(人の手を介さない)
– 途中で止まらない(入力待ちにならない)
– 最後まで正しく実行される、あるいは途中で正しく止まる
– 処理内容・処理結果を後から追跡できる
• 一般ユーザーが実行する
– 分かり易いメッセージを出力する(あるいは、何も出力しない)
– 実行方法、実行形式をミスしても問題が起きないようにする
• 作成者以外の IT 管理者が実行する
• 作成者のみが利用する
– 後からメンテナンスできるよう最低限コメントを記載する
– (場合によっては)エラー処理は考慮しない
27
やりたいことを実現するための処理
• 処理の基本
• 取得(入力)して、抽出して、処理(または出力)する
• 複数のコマンドレット、関数等の間で、対象(オブジェクト)を受け渡す
• オブジェクトの受け渡し
• 引数として入力し、出力を次のコマンドの引数へ渡す
– $a = <Cmdlet1>
– <Cmdlet2> $a
• パイプラインを使用する
– <Cmdlet1> | <Cmdlet2>
28
パイプラインの処理
• <Cmdlet1> | <Cmdlet2> | <Cmdlet3>
• Cmdlet1 の出力オブジェクト全体が Cmdlet2 に渡されるわけではない
• Cmdlet1 の出力がコレクション(配列)の場合
1. <Cmdlet1> の出力の一つ目のオブジェクトが <Cmdlet2> に渡される
2. <Cmdlet2> は一つ目のオブジェクトを処理し、<Cmdlet3> へ渡す
3. <Cmdlet3> でも一つ目のオブジェクトが処理される
4. 上記を、すべてのオブジェクトに対して実行
※はじめは、あまり気にしなくても OK
29
Demo 04
Foreach-Object
• パイプラインの中での繰り返し処理
• 通常は Foreach-Object を使用
• エイリアスは %, foreach
– foreach ステートメントと混同しないように注意
• オブジェクトの配列を受け取り、各要素に処理<scriptblock>を実行
– Foreach-Object <scriptblock>
– <scriptblock>のなかでは、自動変数 $_ に各オブジェクトが設定される
30
Demo 05
データ(オブジェクト)の取得
• 操作対象となるオブジェクトを取得する
• オブジェクト、またはオブジェクトの集合(配列、コレクション、etc...)
• 専用のコマンドレットで取得
• Get-ADUser, Get-WindowsFeature, etc...
• 汎用のコマンドレットで取得
• Get-Item, Get-ItemProperty, etc...
• ファイルから読み込み
• Import-CSV, [xml](Get-Content)
• 自力でデータソースにアクセスして取得
31
ファイルの読み込み
• テキストファイルとして読み込む
• Get-Content –Path <path>
• 1行を1文字列として、文字列の配列を取得
• CSVとして読み込む
• Import-CSV –Path <path>
[-Encoding <Encode>] [-Delimiter <Delimiter>]
• エンコードは極力指定する
– ASCII, BigEndianUnicode, Default, OEM, Unicode, UTF32, UTF7, UTF8
• デリミタ(区切り文字)は、必要に応じて指定する
– デフォルトはカンマ “,”
32
Demo 06
ファイルから読み込む
• XMLとして読み込む
• [xml](Get-Content –Path <path>)
• 文字列から XML オブジェクト(XMLDocument)を生成
33
Demo 07
フィルタリング
• オブジェクトを抽出する(絞り込む)
• 通常は Where-Object(?)を使用
– Where-Object <scriptblock>
– <scriptblock> が $true となるオブジェクトのみを抽出
• ? { $_.Name –eq “suzuki” } ? { $_.Installed }
• ? Name –eq “suzuki” ? Installed
– 同じフィルタ(条件)を多用するのであれば、filter を作成したほうが良い
• 先頭または末尾から抽出する
– Select-Object -First <N>
– Select-Object -Last <N>
• オブジェクトの順序を並び替える
– Sort-Object
34
ファイルへ出力(保存)
• テキストファイルへ出力
• Out-File <path> [-Encoding <Encode>] [-Append]
• 追記する場合は -Append スイッチを使用
• リダイレクトは文字コードを指定できないため、通常はこちらを使用
• CSV ファイルへ出力
• Export-CSV –Path <path> [-Encoding <Encode>] [-Append]
• オブジェクトのプロパティを CSV 形式で出力
35
その他の出力
• Out-Null
• パイプラインから渡されたオブジェクトを捨てる(UNIX の /dev/null)
• Out-String
• パイプラインから渡されたオブジェクトを文字列に変換する
• Write-Host
• 指定されたオブジェクトを Console へ出力する
• パイプラインには何も出力されない
• Write-Output
• 指定されたオブジェクトを標準ストリーム(パイプライン)へ出力する
36
エラーハンドリング
• スクリプト実行時、エラーが発生する要因はたくさんある
• ディスク容量不足
• ネットワーク切断
• 通信先のサービスダウン
• 日付、時刻、起動時間(起動後経過時間)
• スクリプトの不具合(仕様・実装)
• 処理に失敗しても致命的な状態にならないことが重用
• 破壊的な操作を記述する場合は十分にチェックする
– 破壊的な操作:対象の状態を変更する操作(追加、削除、データ変更等)
– 非破壊的な操作:対象の状態を変更しない操作(何度実行しても影響がない)
37
エラーメッセージを出力する
• エラーとしてメッセージを出力する
• Write-Error
• 標準エラーストリームへ出力される
• エラー扱いとなる($ErrorActionPreference の影響を受ける)
• エラーの他にも出力可能
• Write-Warning ストリーム 3 へ出力
• Write-Verbose ストリーム 4 へ出力
• Write-Debug ストリーム 5 へ出力
38
エラー発生時の動作
• エラー発生時
• デフォルトではスクリプトの実行を継続しようとする
– スクリプト実行環境として継続が可能な場合
• $ErrorActionPreference の値により制御される
– SilentlyContinue: エラーメッセージを抑止して継続
– Continue : エラーメッセージを出力して継続
– Stop : 実行を停止
– Inquire : 実行を継続するかユーザーに確認(プロンプト表示)
• 共通パラメータ : -ErrorAction
– 基本的に、全てのコマンドレットでサポートされるパラメータ
– -ErorAction を設定すると $ErrorActionPreference の動作を上書きできる
39
Demo 08
エラーの内容を参照する
• 自動変数 : $Error
• これまでに発生したエラーが保存されている(ArrayList)
– $Error[0] : もっとも直近のエラー
– $Error[1] : 一つ前のエラー
…
– $Error[-1] : 一番古いエラー(一番最初に発生したエラー)
• 共通パラメータ : -ErrorVariable
• 該当のコマンドレット内で発生したエラーを保存する変数を指定可能
• 後からエラーの内容を参照する可能性がある場合は、明示的に別の変数へ
入れておいた方が処理が楽になる(かもしれない)
40
Demo 09
エラー発生時に処理を実行(例外処理)
• trap
• エラーが発生した際に、trap ブロック内の処理を実行
• 処理を実行した後は、エラー発生箇所に戻って処理を再開
– trap が記述されているスコープと同じスコープの後続処理から実行
• continue キーワード
– trap した際にエラー出力を抑止する
• break キーワード
– 後続処理を実行しない(処理を停止する)
41
Demo 10
エラー発生時に処理を実行(例外処理)
• try ... catch ... finally
• try ブロック内のエラーを捕捉し、処理を実行
• catch するエラーオブジェクトを指定可能
– エラーオブジェクトの種類ごとに処理を記述できる
• finally ブロックで後処理が可能
– finally ブロックは、エラーが発生したかどうかに関係なく実行される
• 構造化されており、trap よりもスコープが明確
42
Demo 11
外部の状態に応じて処理を実行
• スクリプト外の処理状態に応じて、処理を実行する
• 別のスクリプトが出力したファイルを利用する
• OS やサービス等の状態に応じて処理を実行する
• 待ち合わせる方法
• 特定の状態になるまで、スクリプト内部でチェックしながら待つ
– コマンドレットによっては -Wait パラメータを利用可能
• 繰り返しタスクとしてスクリプトを登録し、特定の状態のときのみ処理を
実行する
• イベントハンドラを登録し、イベントをトリガーに実行する
• 外部の処理を含めた処理全体をワークフローとして記述する
43
イベントによる制御
• イベント
• オブジェクトの状態変化
• イベントトリガーで処理を実施
• イベントのサブスクライブを行うことで、イベントが発生した際に通知を
受け取ることが可能
• 特定のイベントが発生した際に実行する処理を、イベントハンドラとして
登録
• 例えば
• 特定のフォルダーにファイルが配置されたら処理を行う
• 特定のプロセスがダウンしたら処理を行う
44
Demo 12
通知
• メールで通知
• Send-MailMessage コマンドレットを使用
• 送信用の SMTP サーバーが別途必要
• イベントログに出力
• Write-EventLog コマンドレットを使用
• イベントソースの指定が必要
– 既存のイベントソースを流用する
– 事前に、スクリプト用のイベントソースを登録する
45
イベントログへ出力
• イベントソースを登録
• New-EventLog -LogName <LogName> -Source <SourceName>
– 既存の <LogName> を指定すると、<SourceName> が登録される
– 存在しない <LogName> を指定すると、新規にイベントログを作成する
• 場合によっては管理者権限が必要
• イベントログの出力
• Write-EventLog -LogName <LogName> -EntryType <Type>
-Source <SourceName> -EventId <N>
-Message <Message>
• <Type> は Error, Warning, Information, SuccessAudit, FailureAudit
46
Demo 13
認証情報の取得・保存
• 認証情報の取得
• Get-Credential でプロンプトから取得
• ユーザー名とパスワードから PSCredential オブジェクトを生成
• PSCredential 内のパスワード
• System.Security.SecureString として保持
• ファイルに保存する場合は、Convert が必要
– ConvertFrom-SecureString
– ConvertTo-SecureString
– ファイルのアクセス権に注意
• 実行ユーザーが変わる場合は注意
• 実行ユーザーは生パスワードを取得可能
47
Demo 14
リモート接続・リモート処理
• New-PSSession
• Credential 等を指定して、新規のセッションを作成(確立)する
• Invoke-Command
• New-PSSession で作成したセッションを使用してコマンドを実行する
– -Session パラメータ
• Invoke-Command で直接セッションを確立して実行することも可能
– Invoke-Command の終了時、セッションも終了する
– 同一のセッションを再利用したい場合は、New-PSSession を使用する
48
実行環境の差異に注意する
• 作成環境と実行環境は同一とは限らない
• OS のバージョンが異なるVersion
• PowerShell(WMF)のバージョンが異なる
• インストールされている PowerShell モジュールが異なる
• インストールされている外部コマンドが異なる
• etc...
• 異なる環境で実行される可能性を考慮する
• 実行環境(PowerShell Version)を制限する
• 複数の環境で動作するようスクリプトを記述する
• リソースのチェックやエラー制御を適切に行う
49
Demo 15
実行可能な環境を制限する
• 特定の PowerShell バージョンを要求する
• #requires –version <version>
50
Demo 16
バージョンを判定し動作を分ける
• PowerShell のバージョンを判定する
• $PSVersionTable.PSVersion(PowerShell 2.0 以降)
• PowerShell 1.0 は $PSVersionTable が存在しない
• OS のバージョンを判定する
• Get-WmiObject Win32_OperatingSystem
• [System.Environment]::OSVersion
51
Demo 17
ストリクトモード
• ストリクトモードを設定する
• Set-StrictMode –Version Latest
• Version 2.0 (現在の Latest)
– 初期化されていない変数の参照禁止
– 存在しないプロパティのアクセス禁止
– メソッド形式での関数呼び出し禁止
– 名前なし変数の禁止
• オフにする場合
– Set-StrictMode –Off
• 設定したスコープ(と子スコープ)のみ有効
• http://technet.microsoft.com/ja-jp/library/hh849692.aspx
52
スクリプトの動作を確認する
53
作成したスクリプトの動作確認
• PowerShell ISE 上で実行する
• スクリプト全体を実行
• 範囲を選択して実行
• ブレークポイントの設定とブレークポイントでの停止 / 再開
• ステップ実行
• コンソールと ISE では、一部動作 (挙動) が異なる
• 外部コマンドの呼び出し制約
– $psUnsupportedConsoleApplications
• OS と WMF のバージョンの組み合わせによっては、コマンドの出力結果
54
Demo 18
デバッグ情報の出力
• トレースレベルの設定
• Set-PSDebug -Trace <N>
– 0 : トレース無効
– 1 : 実行されるスクリプトの各行をトレース
– 2 : スクリプト行、変数の代入、関数呼び出し、スクリプトをトレース
• 自動変数
• $DebugPreference と $DebugPreference
• 共通パラメータ
• -Debug と -Verbose
55
スクリプトを展開する
56
スクリプトの実行許可
• スクリプトの実行やコンフィグレーションのロード
• 実行ポリシー (Execution Policy) によって制御される
• 既定値では、スクリプトの実行が禁止されている
– Windows Server 2012 R2 以外
• 実行ポリシーの確認と変更
• Get-ExecutionPolicy / Set-ExecutionPolicy
• グループポリシーによる設定
– コンピューターポリシー / ユーザーポリシー
• PowerShell 起動時のオプションで指定
– powershell.exe -ExecutionPolicy <Policy>
57
実行ポリシー
• 実行ポリシーは以下の 6 種類 (5 段階 + “未定義”)
• Restricted : スクリプトの実行を禁止する
• AllSigned : 有効な署名付きのスクリプトのみ実行可能
• RemoteSigned : ローカルのスクリプトは無条件に実行可能
リモートから取得したスクリプトには署名が必要
• Unrestricted : スクリプトは実行可能 (一部警告表示あり)
• Bypass : スクリプトは実行可能 (警告表示なし)
• Undefined : 未定義
• 規定値は Undefined
• Windows Server 2012 R2 のみ RemoteSigned (LocalMachine Scope)
• 全てのスコープで Undefined の場合、Restricted とみなされる
58
実行ポリシーのスコープ
• 実行ポリシーはスコープごとに設定可能
• MachinePolicy : グループポリシーによる設定 (Computer)
• UserPolicy : グループポリシーによる設定 (User)
• Process : 実行中の PowerShell セッション内のみ有効
• CurrentUser : ログインユーザーの設定 (レジストリに格納)
• LocalMachine : ローカルコンピューターの設定 (レジストリに格納)
• 上位スコープの設定が優先される
• 基本的には管理者権限で設定を行う
• Process / CurrentUser スコープは一般ユーザー権限で設定変更可能
• LocalMachine スコープでスクリプト実行を禁止していても、Process ス
コープで実行を許可することで、一時的なスクリプトの実行が可能
59
リモート接続の構成
• リモート コンピューターへ接続して操作を行う
• WS-Management を使用してリモートコンピューターの WinRM
(Windows Remote Management) サービスへ接続する
• 事前にリモート接続の構成が必要
– Windows Server 2012 R2 では、同一セグメントからのリモート接続が
デフォルトで許可されている
• とりあえず接続したい場合は以下を実行 (検証環境向け)
– 接続先 : Enable-PSRemoting -Force
– 接続元 : Set-Item WSMan:¥localhost¥Client¥TrustedHosts -Value *
– 本番環境へ適用する際は、設定の意味を理解してセキュリティを考慮する
• Get-Help about_Remote
– http://technet.microsoft.com/en-us/library/hh847900.aspx
60
リモート接続の要件
• リモート接続の要件を満たすようコンピューターを構成する
• WinRM サービスが起動している
• WinRM のエンドポイントが適切に構成されている
• Windows Firewall やその他の Firewall 製品で通信が許可されている
– ネットワークロケーションがパブリック ネットワークの場合、PowerShell の
バージョン / OS によって Enable-PSRemoting の挙動が異なるので注意
• 接続先コンピューターの Administrators グループに所属しているか、
権限が適切に構成されている
• 接続先に対する資格情報の送信が許可されている
– ドメインに参加しているか、TrustedHosts が適切に構成されている
• Get-Help about_Remote_Requirements
– http://technet.microsoft.com/en-us/library/hh847859.aspx
61
リモート接続時の注意点
• PowerShell のバージョンによりセッションの扱いが異なる
• PowerShell 2.0 / WinRM 2.0 では接続元側でセッション情報を保持
• PowerShell 3.0 / WinRM 3.0 以降は接続先側でセッション情報を保持
– セッションを切断し、別の接続元から同一のセッションへ再接続が可能
• トラブルが少ない構成
• ドメイン環境
• Domain Admins グループのユーザーを使用
• WMF (Windows Management Framework) 3.0
(PowerShell 3.0 / WinRM 3.0) 以降を使用
62
実行方法
• ユーザーが任意に実行
• スクリプトファイルを powershell.exe から実行
• 登録されたタスクを手動実行
• 決められた時刻に自動実行(スケジュールタスク)
• タスクスケジューラに登録
• 特定の状態に変化したら実行(イベント)
• イベントトリガーで実行
63
タスクスケジューラからスクリプトを実行
• タスクスケジューラにタスクを登録
• 実行するコマンド(実行ファイル)は powershell.exe
• -Command “<script path>” を指定
• 実行ユーザーに注意する
• スクリプト内の処理を実行する権限があるか
– 特権モード、所属グループ、NTFS ACL、委任、etc...
• 保存された Credential を使用する場合は、実行ユーザーで Credential が
保存されているか
• 実行環境(プロファイル)に問題はないか
– プロファイル、UAC、etc...
64
Azure の操作を自動化
• Azure サービスのコントロール
• Azure PowerShell を使用
• 仮想マシン内の OS のコントロールは、通常の OS と同様
• サービスコントロール用の認証情報
• Add-AzureAccount ではなく、Get-AzurePublishSettingsFile を使う
– Azure Active Directory 認証ではなく、証明書認証
– Azure AD の認証は 12 時間で Expire するので注意
– 証明書であれば、証明書の有効期限(かつ、サブスクリプションの有効期限)
まで利用可能
65
Azure の操作を自動化
• Azure AD で認証されている状態
66
Azure の操作を自動化
• 証明書が登録されている状態
67
Tips
68
単位変換
• バイトの単位
• KB, MB, GB, TB, PB がキーワードとして登録されている
– 1KB : 1024
– 1MB : 1048576
– 1GB : 1073741824
– 1TB : 1099511627776
– 1PB : 1125899906842624
• 大文字、小文字は区別されない
– 1KB = 1kB = 1Kb = 1kb = 1024
• EB, ZB, YB は変換できない
69
文法やコマンドレットの確認
• 困ったときはヘルプを見る
• Get-Help about_*
• Get-Help <Cmdlet> -Full
• 使えそうなコマンドがないか調べる
• Get-Command
• <Cmdlet> | Get-Member
• <Cmdlet>.GetType()
70
まとめ
• PowerShell によるスクリプト作成は難しくない
• スクリプトの利用用途を考慮して、記述レベルを検討する
• 破壊的な捜査を行う前には必ずチェックする
• エラー処理は必要に応じて実施する
• 困ったらとりあえず動かしてみる(検証環境で)
71
参考資料
• Scripting with Windows PowerShell(TechNet)
• http://technet.microsoft.com/en-us/library/bb978526.aspx
• Windows PowerShell によるWindows Server 管理の
自動化 v4.0 2014.03.13 更新版(安納さん)
• http://www.slideshare.net/junichia/windows-powershell-30-
windows-server-2012
• Windows PowerShell ポケットリファレンス(牟田口さん)
• http://gihyo.jp/book/2013/978-4-7741-5542-5
※TechNet は英語版のページを参照しましょう
72
73
Q & A
ご清聴ありがとうございました
74
Thank You!

More Related Content

What's hot

Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~
Yuta Matsumura
 
Stac2021 [初学者向け]ローコード開発におけるテストの考え方
Stac2021 [初学者向け]ローコード開発におけるテストの考え方Stac2021 [初学者向け]ローコード開発におけるテストの考え方
Stac2021 [初学者向け]ローコード開発におけるテストの考え方
Satoshi Sakashita
 
30分で分かる!OSの作り方
30分で分かる!OSの作り方30分で分かる!OSの作り方
30分で分かる!OSの作り方
uchan_nos
 
バグなんて見逃しちゃえ
バグなんて見逃しちゃえバグなんて見逃しちゃえ
バグなんて見逃しちゃえ
ssuser0be501
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
 
Ansible AWXを導入してみた
Ansible AWXを導入してみたAnsible AWXを導入してみた
Ansible AWXを導入してみた
sugoto
 
Goss入門
Goss入門Goss入門
Goss入門
ShuyaMotouchi1
 
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
Yoshiro Tokumasu
 
SQLite の暗号化
SQLite の暗号化SQLite の暗号化
SQLite の暗号化
Akihiro Matsuura
 
Ansible勉強会資料
Ansible勉強会資料Ansible勉強会資料
Ansible勉強会資料
Makoto Oya
 
FPGAでベンチマークしたときに苦労した話@fpgax#12
FPGAでベンチマークしたときに苦労した話@fpgax#12FPGAでベンチマークしたときに苦労した話@fpgax#12
FPGAでベンチマークしたときに苦労した話@fpgax#12
Jun Ando
 
Concourseで快適な自動化の旅
Concourseで快適な自動化の旅Concourseで快適な自動化の旅
Concourseで快適な自動化の旅
Kazuto Kusama
 
PostgreSQLの範囲型と排他制約
PostgreSQLの範囲型と排他制約PostgreSQLの範囲型と排他制約
PostgreSQLの範囲型と排他制約Akio Ishida
 
(Fix)Azure Network Security Group(NSG)のおさらい
(Fix)Azure Network Security Group(NSG)のおさらい(Fix)Azure Network Security Group(NSG)のおさらい
(Fix)Azure Network Security Group(NSG)のおさらい
Yoshimasa Katakura
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
 
ruby-ffiについてざっくり解説
ruby-ffiについてざっくり解説ruby-ffiについてざっくり解説
ruby-ffiについてざっくり解説
ota42y
 
CloudFront経由でのCORS利用
CloudFront経由でのCORS利用CloudFront経由でのCORS利用
CloudFront経由でのCORS利用
Yuta Imai
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
Shohei Okada
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
Toru Makabe
 

What's hot (20)

Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~
 
Stac2021 [初学者向け]ローコード開発におけるテストの考え方
Stac2021 [初学者向け]ローコード開発におけるテストの考え方Stac2021 [初学者向け]ローコード開発におけるテストの考え方
Stac2021 [初学者向け]ローコード開発におけるテストの考え方
 
30分で分かる!OSの作り方
30分で分かる!OSの作り方30分で分かる!OSの作り方
30分で分かる!OSの作り方
 
バグなんて見逃しちゃえ
バグなんて見逃しちゃえバグなんて見逃しちゃえ
バグなんて見逃しちゃえ
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
 
Ansible AWXを導入してみた
Ansible AWXを導入してみたAnsible AWXを導入してみた
Ansible AWXを導入してみた
 
Goss入門
Goss入門Goss入門
Goss入門
 
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
 
SQLite の暗号化
SQLite の暗号化SQLite の暗号化
SQLite の暗号化
 
Ansible勉強会資料
Ansible勉強会資料Ansible勉強会資料
Ansible勉強会資料
 
FPGAでベンチマークしたときに苦労した話@fpgax#12
FPGAでベンチマークしたときに苦労した話@fpgax#12FPGAでベンチマークしたときに苦労した話@fpgax#12
FPGAでベンチマークしたときに苦労した話@fpgax#12
 
Concourseで快適な自動化の旅
Concourseで快適な自動化の旅Concourseで快適な自動化の旅
Concourseで快適な自動化の旅
 
PostgreSQLの範囲型と排他制約
PostgreSQLの範囲型と排他制約PostgreSQLの範囲型と排他制約
PostgreSQLの範囲型と排他制約
 
(Fix)Azure Network Security Group(NSG)のおさらい
(Fix)Azure Network Security Group(NSG)のおさらい(Fix)Azure Network Security Group(NSG)のおさらい
(Fix)Azure Network Security Group(NSG)のおさらい
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
 
ruby-ffiについてざっくり解説
ruby-ffiについてざっくり解説ruby-ffiについてざっくり解説
ruby-ffiについてざっくり解説
 
CloudFront経由でのCORS利用
CloudFront経由でのCORS利用CloudFront経由でのCORS利用
CloudFront経由でのCORS利用
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
 

Viewers also liked

04 windows powershellスクリプト作成の基礎知識
04 windows powershellスクリプト作成の基礎知識04 windows powershellスクリプト作成の基礎知識
04 windows powershellスクリプト作成の基礎知識
s_hayashi
 
PowerShell DSC と Linux
PowerShell DSC と LinuxPowerShell DSC と Linux
PowerShell DSC と Linux
Kazuki Takai
 
Vb script power_shellでメール送信
Vb script power_shellでメール送信Vb script power_shellでメール送信
Vb script power_shellでメール送信
Naoyuki Sano
 
PowerShell 5.0 & Security
PowerShell 5.0 & SecurityPowerShell 5.0 & Security
PowerShell 5.0 & Security
Kazuki Takai
 
開発者のためのActive Directory講座
開発者のためのActive Directory講座開発者のためのActive Directory講座
開発者のためのActive Directory講座
junichi anno
 
安全なデータ公開のために
安全なデータ公開のために 安全なデータ公開のために
安全なデータ公開のために
Wakamatz
 
会社でPowershell
会社でPowershell会社でPowershell
会社でPowershell
kobexr
 
Exchange Onlineの階層型アドレス帳の設定事例
Exchange Onlineの階層型アドレス帳の設定事例Exchange Onlineの階層型アドレス帳の設定事例
Exchange Onlineの階層型アドレス帳の設定事例
Shu Yamada
 
Korea internet & Search Engine Market
Korea internet & Search Engine MarketKorea internet & Search Engine Market
Korea internet & Search Engine Market
Pawoot (Pom) Pongvitayapanu
 
Windows Server Essentials用PowerShell コマンドレットを使ってみよう!
Windows Server Essentials用PowerShell コマンドレットを使ってみよう!Windows Server Essentials用PowerShell コマンドレットを使ってみよう!
Windows Server Essentials用PowerShell コマンドレットを使ってみよう!
Satoru Nasu
 
PowerShell 5.0 JEA (Just Enough Administration) First Step
PowerShell 5.0 JEA (Just Enough Administration) First StepPowerShell 5.0 JEA (Just Enough Administration) First Step
PowerShell 5.0 JEA (Just Enough Administration) First Step
Kazuki Takai
 
社内システムの移行に役立った“時間節約”方法~PowerShellとExcelを上手に使おう
社内システムの移行に役立った“時間節約”方法~PowerShellとExcelを上手に使おう社内システムの移行に役立った“時間節約”方法~PowerShellとExcelを上手に使おう
社内システムの移行に役立った“時間節約”方法~PowerShellとExcelを上手に使おう
Satoru Nasu
 
5 (2교시) '15년 용접세미나(강재별 용접특성-박홍원)-150506
5 (2교시) '15년 용접세미나(강재별 용접특성-박홍원)-1505065 (2교시) '15년 용접세미나(강재별 용접특성-박홍원)-150506
5 (2교시) '15년 용접세미나(강재별 용접특성-박홍원)-150506
topshock
 
ライセンスを理解してますか?知っておきたいWordPressとGPLライセンス
ライセンスを理解してますか?知っておきたいWordPressとGPLライセンスライセンスを理解してますか?知っておきたいWordPressとGPLライセンス
ライセンスを理解してますか?知っておきたいWordPressとGPLライセンス
Jun Nogata
 
Ingles español - diccionario técnico
Ingles español - diccionario técnicoIngles español - diccionario técnico
Ingles español - diccionario técnico
MARMAYA
 
[네이버 D2SF] R&D Fund 2016년 3차_사업소개
[네이버 D2SF] R&D Fund 2016년 3차_사업소개[네이버 D2SF] R&D Fund 2016년 3차_사업소개
[네이버 D2SF] R&D Fund 2016년 3차_사업소개
NAVER D2 STARTUP FACTORY
 
[D2SF] Naver 오픈 API 가이드
[D2SF] Naver 오픈 API 가이드[D2SF] Naver 오픈 API 가이드
[D2SF] Naver 오픈 API 가이드
NAVER D2 STARTUP FACTORY
 
[Tutorial] Diccionario de Naver (Español)
[Tutorial] Diccionario de Naver (Español)[Tutorial] Diccionario de Naver (Español)
[Tutorial] Diccionario de Naver (Español)
Nadhia Olivos
 
Hyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理するHyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理する
junichi anno
 
F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업NAVER D2
 

Viewers also liked (20)

04 windows powershellスクリプト作成の基礎知識
04 windows powershellスクリプト作成の基礎知識04 windows powershellスクリプト作成の基礎知識
04 windows powershellスクリプト作成の基礎知識
 
PowerShell DSC と Linux
PowerShell DSC と LinuxPowerShell DSC と Linux
PowerShell DSC と Linux
 
Vb script power_shellでメール送信
Vb script power_shellでメール送信Vb script power_shellでメール送信
Vb script power_shellでメール送信
 
PowerShell 5.0 & Security
PowerShell 5.0 & SecurityPowerShell 5.0 & Security
PowerShell 5.0 & Security
 
開発者のためのActive Directory講座
開発者のためのActive Directory講座開発者のためのActive Directory講座
開発者のためのActive Directory講座
 
安全なデータ公開のために
安全なデータ公開のために 安全なデータ公開のために
安全なデータ公開のために
 
会社でPowershell
会社でPowershell会社でPowershell
会社でPowershell
 
Exchange Onlineの階層型アドレス帳の設定事例
Exchange Onlineの階層型アドレス帳の設定事例Exchange Onlineの階層型アドレス帳の設定事例
Exchange Onlineの階層型アドレス帳の設定事例
 
Korea internet & Search Engine Market
Korea internet & Search Engine MarketKorea internet & Search Engine Market
Korea internet & Search Engine Market
 
Windows Server Essentials用PowerShell コマンドレットを使ってみよう!
Windows Server Essentials用PowerShell コマンドレットを使ってみよう!Windows Server Essentials用PowerShell コマンドレットを使ってみよう!
Windows Server Essentials用PowerShell コマンドレットを使ってみよう!
 
PowerShell 5.0 JEA (Just Enough Administration) First Step
PowerShell 5.0 JEA (Just Enough Administration) First StepPowerShell 5.0 JEA (Just Enough Administration) First Step
PowerShell 5.0 JEA (Just Enough Administration) First Step
 
社内システムの移行に役立った“時間節約”方法~PowerShellとExcelを上手に使おう
社内システムの移行に役立った“時間節約”方法~PowerShellとExcelを上手に使おう社内システムの移行に役立った“時間節約”方法~PowerShellとExcelを上手に使おう
社内システムの移行に役立った“時間節約”方法~PowerShellとExcelを上手に使おう
 
5 (2교시) '15년 용접세미나(강재별 용접특성-박홍원)-150506
5 (2교시) '15년 용접세미나(강재별 용접특성-박홍원)-1505065 (2교시) '15년 용접세미나(강재별 용접특성-박홍원)-150506
5 (2교시) '15년 용접세미나(강재별 용접특성-박홍원)-150506
 
ライセンスを理解してますか?知っておきたいWordPressとGPLライセンス
ライセンスを理解してますか?知っておきたいWordPressとGPLライセンスライセンスを理解してますか?知っておきたいWordPressとGPLライセンス
ライセンスを理解してますか?知っておきたいWordPressとGPLライセンス
 
Ingles español - diccionario técnico
Ingles español - diccionario técnicoIngles español - diccionario técnico
Ingles español - diccionario técnico
 
[네이버 D2SF] R&D Fund 2016년 3차_사업소개
[네이버 D2SF] R&D Fund 2016년 3차_사업소개[네이버 D2SF] R&D Fund 2016년 3차_사업소개
[네이버 D2SF] R&D Fund 2016년 3차_사업소개
 
[D2SF] Naver 오픈 API 가이드
[D2SF] Naver 오픈 API 가이드[D2SF] Naver 오픈 API 가이드
[D2SF] Naver 오픈 API 가이드
 
[Tutorial] Diccionario de Naver (Español)
[Tutorial] Diccionario de Naver (Español)[Tutorial] Diccionario de Naver (Español)
[Tutorial] Diccionario de Naver (Español)
 
Hyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理するHyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理する
 
F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업
 

Similar to IT Pro のための PowerShell スクリプティング

Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
shigeya
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
shigeya
 
170622 02
170622 02170622 02
170622 02
openrtm
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
Sho A
 
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
Insight Technology, Inc.
 
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキングTakayuki Kondou
 
XPages 開発 Tips 百連発
XPages 開発 Tips 百連発XPages 開発 Tips 百連発
XPages 開発 Tips 百連発
Mitsuru Katoh
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門Sho A
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセスMakoto Kato
 
PowerShell を使用した Hyper-V の管理
PowerShell を使用した Hyper-V の管理PowerShell を使用した Hyper-V の管理
PowerShell を使用した Hyper-V の管理
Kazuki Takai
 
Selenium webdriver使ってみようず
Selenium webdriver使ってみようずSelenium webdriver使ってみようず
Selenium webdriver使ってみようず
Oda Shinsuke
 
運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回
Shigeharu Yamaoka
 
Powershell勉強会 v2 (もっと新しいバージョンがあります)
Powershell勉強会 v2 (もっと新しいバージョンがあります)Powershell勉強会 v2 (もっと新しいバージョンがあります)
Powershell勉強会 v2 (もっと新しいバージョンがあります)
Tetsu Yama
 
Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります)
Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります)Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります)
Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります)
Tetsu Yama
 
Powershell勉強会 v3 (もっと新しいバージョンがあります)
Powershell勉強会 v3 (もっと新しいバージョンがあります)Powershell勉強会 v3 (もっと新しいバージョンがあります)
Powershell勉強会 v3 (もっと新しいバージョンがあります)
Tetsu Yama
 
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話
terurou
 
利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤
Sotaro Kimura
 
Clrh 110827 wfho
Clrh 110827 wfhoClrh 110827 wfho
Clrh 110827 wfho
Tomoyuki Obi
 
Openstack SPICE console (icehouse) verification
Openstack SPICE console (icehouse) verificationOpenstack SPICE console (icehouse) verification
Openstack SPICE console (icehouse) verification
yukihiro kawada
 
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
Insight Technology, Inc.
 

Similar to IT Pro のための PowerShell スクリプティング (20)

Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
 
170622 02
170622 02170622 02
170622 02
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
 
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
 
XPages 開発 Tips 百連発
XPages 開発 Tips 百連発XPages 開発 Tips 百連発
XPages 開発 Tips 百連発
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセス
 
PowerShell を使用した Hyper-V の管理
PowerShell を使用した Hyper-V の管理PowerShell を使用した Hyper-V の管理
PowerShell を使用した Hyper-V の管理
 
Selenium webdriver使ってみようず
Selenium webdriver使ってみようずSelenium webdriver使ってみようず
Selenium webdriver使ってみようず
 
運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回
 
Powershell勉強会 v2 (もっと新しいバージョンがあります)
Powershell勉強会 v2 (もっと新しいバージョンがあります)Powershell勉強会 v2 (もっと新しいバージョンがあります)
Powershell勉強会 v2 (もっと新しいバージョンがあります)
 
Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります)
Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります)Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります)
Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります)
 
Powershell勉強会 v3 (もっと新しいバージョンがあります)
Powershell勉強会 v3 (もっと新しいバージョンがあります)Powershell勉強会 v3 (もっと新しいバージョンがあります)
Powershell勉強会 v3 (もっと新しいバージョンがあります)
 
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話
 
利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤
 
Clrh 110827 wfho
Clrh 110827 wfhoClrh 110827 wfho
Clrh 110827 wfho
 
Openstack SPICE console (icehouse) verification
Openstack SPICE console (icehouse) verificationOpenstack SPICE console (icehouse) verification
Openstack SPICE console (icehouse) verification
 
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
 

More from Kazuki Takai

Azure Arc Automanage Machine Configuration による構成の管理と適用
Azure Arc Automanage Machine Configuration による構成の管理と適用Azure Arc Automanage Machine Configuration による構成の管理と適用
Azure Arc Automanage Machine Configuration による構成の管理と適用
Kazuki Takai
 
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Kazuki Takai
 
Azure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox EditionAzure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox Edition
Kazuki Takai
 
ArcBox のおさらいと最新情報
ArcBox のおさらいと最新情報ArcBox のおさらいと最新情報
ArcBox のおさらいと最新情報
Kazuki Takai
 
Arc 対応サーバーへの SSH アクセス
Arc 対応サーバーへの SSH アクセスArc 対応サーバーへの SSH アクセス
Arc 対応サーバーへの SSH アクセス
Kazuki Takai
 
Insight into Azure Active Directory #02 - Azure AD B2B Collaboration New Feat...
Insight into Azure Active Directory #02 - Azure AD B2B Collaboration New Feat...Insight into Azure Active Directory #02 - Azure AD B2B Collaboration New Feat...
Insight into Azure Active Directory #02 - Azure AD B2B Collaboration New Feat...
Kazuki Takai
 
Insight into Azure Active Directory - Azure AD Custom Role & Scope
Insight into Azure Active Directory - Azure AD Custom Role & ScopeInsight into Azure Active Directory - Azure AD Custom Role & Scope
Insight into Azure Active Directory - Azure AD Custom Role & Scope
Kazuki Takai
 
最近の PowerShell について
最近の PowerShell について最近の PowerShell について
最近の PowerShell について
Kazuki Takai
 
Windows Server 2022 Datacenter Azure Edition Overview
Windows Server 2022 Datacenter Azure Edition OverviewWindows Server 2022 Datacenter Azure Edition Overview
Windows Server 2022 Datacenter Azure Edition Overview
Kazuki Takai
 
Azure Arc 概要
Azure Arc 概要Azure Arc 概要
Azure Arc 概要
Kazuki Takai
 
Past and Future of PowerShell
Past and Future of PowerShellPast and Future of PowerShell
Past and Future of PowerShell
Kazuki Takai
 
Introducing Windows Terminal
Introducing Windows TerminalIntroducing Windows Terminal
Introducing Windows Terminal
Kazuki Takai
 
Recap: Windows Server 2019 Failover Clustering
Recap: Windows Server 2019 Failover ClusteringRecap: Windows Server 2019 Failover Clustering
Recap: Windows Server 2019 Failover Clustering
Kazuki Takai
 
使ってみよう PowerShell
使ってみよう PowerShell使ってみよう PowerShell
使ってみよう PowerShell
Kazuki Takai
 
5分で分かる Windows Server 2019 HCI 超概要
5分で分かる Windows Server 2019 HCI 超概要5分で分かる Windows Server 2019 HCI 超概要
5分で分かる Windows Server 2019 HCI 超概要
Kazuki Takai
 
Application Platform としての Windows Server 2019
Application Platform としての Windows Server 2019Application Platform としての Windows Server 2019
Application Platform としての Windows Server 2019
Kazuki Takai
 
Windows Server 2019 で Container を使ってみる
Windows Server 2019 で Container を使ってみるWindows Server 2019 で Container を使ってみる
Windows Server 2019 で Container を使ってみる
Kazuki Takai
 
Getting started with Windows Containers
Getting started with Windows ContainersGetting started with Windows Containers
Getting started with Windows Containers
Kazuki Takai
 
Recap: PowerShell Core
Recap: PowerShell CoreRecap: PowerShell Core
Recap: PowerShell Core
Kazuki Takai
 
Windows とコンテナの話
Windows とコンテナの話Windows とコンテナの話
Windows とコンテナの話
Kazuki Takai
 

More from Kazuki Takai (20)

Azure Arc Automanage Machine Configuration による構成の管理と適用
Azure Arc Automanage Machine Configuration による構成の管理と適用Azure Arc Automanage Machine Configuration による構成の管理と適用
Azure Arc Automanage Machine Configuration による構成の管理と適用
 
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
 
Azure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox EditionAzure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox Edition
 
ArcBox のおさらいと最新情報
ArcBox のおさらいと最新情報ArcBox のおさらいと最新情報
ArcBox のおさらいと最新情報
 
Arc 対応サーバーへの SSH アクセス
Arc 対応サーバーへの SSH アクセスArc 対応サーバーへの SSH アクセス
Arc 対応サーバーへの SSH アクセス
 
Insight into Azure Active Directory #02 - Azure AD B2B Collaboration New Feat...
Insight into Azure Active Directory #02 - Azure AD B2B Collaboration New Feat...Insight into Azure Active Directory #02 - Azure AD B2B Collaboration New Feat...
Insight into Azure Active Directory #02 - Azure AD B2B Collaboration New Feat...
 
Insight into Azure Active Directory - Azure AD Custom Role & Scope
Insight into Azure Active Directory - Azure AD Custom Role & ScopeInsight into Azure Active Directory - Azure AD Custom Role & Scope
Insight into Azure Active Directory - Azure AD Custom Role & Scope
 
最近の PowerShell について
最近の PowerShell について最近の PowerShell について
最近の PowerShell について
 
Windows Server 2022 Datacenter Azure Edition Overview
Windows Server 2022 Datacenter Azure Edition OverviewWindows Server 2022 Datacenter Azure Edition Overview
Windows Server 2022 Datacenter Azure Edition Overview
 
Azure Arc 概要
Azure Arc 概要Azure Arc 概要
Azure Arc 概要
 
Past and Future of PowerShell
Past and Future of PowerShellPast and Future of PowerShell
Past and Future of PowerShell
 
Introducing Windows Terminal
Introducing Windows TerminalIntroducing Windows Terminal
Introducing Windows Terminal
 
Recap: Windows Server 2019 Failover Clustering
Recap: Windows Server 2019 Failover ClusteringRecap: Windows Server 2019 Failover Clustering
Recap: Windows Server 2019 Failover Clustering
 
使ってみよう PowerShell
使ってみよう PowerShell使ってみよう PowerShell
使ってみよう PowerShell
 
5分で分かる Windows Server 2019 HCI 超概要
5分で分かる Windows Server 2019 HCI 超概要5分で分かる Windows Server 2019 HCI 超概要
5分で分かる Windows Server 2019 HCI 超概要
 
Application Platform としての Windows Server 2019
Application Platform としての Windows Server 2019Application Platform としての Windows Server 2019
Application Platform としての Windows Server 2019
 
Windows Server 2019 で Container を使ってみる
Windows Server 2019 で Container を使ってみるWindows Server 2019 で Container を使ってみる
Windows Server 2019 で Container を使ってみる
 
Getting started with Windows Containers
Getting started with Windows ContainersGetting started with Windows Containers
Getting started with Windows Containers
 
Recap: PowerShell Core
Recap: PowerShell CoreRecap: PowerShell Core
Recap: PowerShell Core
 
Windows とコンテナの話
Windows とコンテナの話Windows とコンテナの話
Windows とコンテナの話
 

Recently uploaded

FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 

Recently uploaded (14)

FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 

IT Pro のための PowerShell スクリプティング

  • 1. Cloud OS MVP Roadshow 2014 年 6 月 Cloud OS Tech Day! IT Pro のための PowerShell スクリプティング 高井 一輝 System Center User Group Japan
  • 2. 自己紹介 • 高井 一輝 (Takai Kazuki) • 某 ISP 勤務 • クラウドとオンプレミスを組み合わせたインテグレーション • 見積り、提案書の作成から設計、構築、試験、運用まで • ネットワーク、サーバ (Windows、Linux) • System Center User Group Japan (SCUGJ) • Twitter : @zhuky7 / Facebook : kazuki.takai • Blog : http://operationslab.wordpress.com/ 2
  • 3. 本日の内容 • お話すること • PowerShell についてのおさらい – スクリプトを記述するうえで必要となる内容 – スクリプトを実行するために必要となる内容 • スクリプトでやりたいことを実現するためのパーツ • スクリプトを作成するうえで注意すべきこと • お話しないこと • PowerShell コマンドレットの実行方法 • PowerShell Remoting の仕組み • PowerShell Workflow • 個々の製品の具体的な管理方法 3
  • 4. このセッションのゴール • 簡単な PowerShell スクリプトを作成できる • 目的に応じてスクリプトを作成できる • スクリプトの実行、運用ができる 4
  • 5. 本日の環境 • Windows 7 Professional with WMF 4.0 • Windows Server 2012 R2 5
  • 6. アジェンダ • Windows PowerShell の基礎 • スクリプトを作成する • スクリプトの動作を確認する • スクリプトを展開する 6
  • 8. PowerShell とは • Windows で利用可能な新しいシェル / スクリプト言語 • Windows Server 2008 R2 以降で標準搭載 • コマンドプロンプトよりも高度な処理 / 制御が可能 • WSH よりもスクリプトの記述が容易 • Character-based User Interface • テキストベースではなくオブジェクトベース • パイプラインを流れるのはオブジェクト • 豊富なコマンドレット • PowerShell 本体で用意されているコマンドレット • Windows Server OS や役割 / 機能に付随するコマンドレット • 特定の製品やサービスに付随するコマンドレット 8
  • 9. オブジェクトベース • コマンドレットの入力、出力はオブジェクト • コンソールに出力する際は、オブジェクトを文字列に変換している • パイプラインを流れるのはオブジェクト • オブジェクトベースなので… • 一部のプロパティ(列)だけ取り出して加工できる – アカウントの一覧から “アカウント名” と “最終ログイン日時” だけ取り出す • プロパティの値を使ってフィルタリングできる – Windows の役割・機能の一覧から、インストールされているものだけ取り出す • オブジェクトの状態を操作できる 9
  • 10. 現在の最新版 • PowerShell 4.0 • Windows Server 2012 R2 に標準搭載 • Windows Management Framework 4.0 をインストールすることで、 他の OS でも利用可能 – Windows 7 SP1, Windows Server 2008 R2 SP1, Windows Server 2012 – .NET Framework 4.5 が必要 • PowerShell 5.0 Preview May 2014 • with Windows Management Framework 5.0 – http://www.microsoft.com/en-us/download/details.aspx?id=42936 • includes OneGet, PowerShellGet, and Network Switch 10
  • 11. 基本事項のおさらい • PowerShell 実行環境 • 演算子 • リダイレクト • 変数とスコープ • ヒアドキュメント • 条件分岐 • 繰り返し 11
  • 12. PowerShell 実行環境 • PowerShell (PowerShell コンソール) • powershell.exe • 通常の PowerShell 環境 • PowerShell ISE (Integrated Scripting Environment) • powershell_ise.exe • スクリプト作成 / デバッグ用の環境 – ブレークポイントの設定 – スクリプトの一部を選択して実行 (選択範囲を実行) 12
  • 13. 演算子 • 算術演算子(about_Arithmetic_Operators) • +, -, *, /, % • 代入演算子(about_Assignment_Operators) • =, +=, -=, *=, /=, %= • 比較演算子(about_Comparison_Operators) • -eq, -ne, -gt, -lt, -le, -ge, -match, -notmatch, -replace, -like, -notlike, -in, -notin, -contains, -notcontains, -bAND, -bOR, -bXOR, -bNOT • 論理演算子(about_Logical_Operators) • -and, -or, -xor, -not, ! 13
  • 14. 演算子 • リダイレクト演算子(about_Redirection) • 後述 • 分割/結合演算子(about_Split / about_Join) • -split, -join • 型演算子(about_Type_Operators) • -is, -isnot, -as • 単項演算子(about_Operators) • $a++, $a— • 特殊演算子(about_Operators) • @(), [], &, |, .., ::, etc... 14
  • 15. リダイレクト • リダイレクト演算子 • ストリームの出力先を変更 > 標準ストリームをファイルに保存(既存ファイルは上書き) >> 標準ストリームをファイルに保存(既存ファイルに追記) 2> エラーストリームをファイルに保存(既存ファイルは上書き) 2>> エラーストリームをファイルに保存(既存ファイルに追記) 2>&1 エラーストリームを標準ストリームと同じ場所へ出力 • ストリーム番号 – 2:エラー 3:警告 4:詳細 5:デバッグ • 出力文字コードは UTF-16 になるので注意 – 文字コードを変換しつつ出力する場合は、Out-File 等を利用 15
  • 16. 変数とスコープ • 変数:値を格納するための場所(入れ物) • $ を先頭に付ける • 参照可能な範囲(スコープ)がある – 関数内、ブロック内、スクリプト内で宣言された変数は、原則として外部から は参照できない – 可能な限りグローバル変数は使用しない • 変数のスコープ • グローバル:どこからでも参照可能 • スクリプト:同一スクリプト内であれば参照可能 • (ローカル):同一ブロックまたは子ブロック内であれば参照可能 • プライベート:同一ブロック内のみ参照可能 16 Demo 01
  • 17. 変数とスコープ • ドットソース形式での読み込み • スクリプト内の変数をグローバル変数として取り込む • . <ScriptPath> • 変数初期化(定義)用のファイルを分割したい場合等に利用可能 • 通常のスクリプトファイルに対しては使用しない方が良い – グローバル変数を無暗に増やさない • 不要な変数がある場合やグローバル変数が競合する場合は、削除する – Remove-Variable 17 Demo 02
  • 18. ヒアドキュメント • スクリプト内に文字列を埋め込むことが可能 • @’ <複数行文字列> ‘@ • @’ の直後に改行が必須 • 主に、テスト時や簡単なスクリプトで使用 • スクリプトに埋め込むことになるので、保守性が悪い • 本格的に運用(使用)する場合は、外部ファイルから読み込む 18 Demo 03
  • 19. 条件分岐 • if ... elseif ... Else • if (条件式1) { 条件式1を満たす時の処理 } elseif (条件式2) { 条件式2を満たす時の処理 } ... elseif (条件式n) { 条件式nを満たす時の処理 } else { 条件式1..nを満たさなかった時の処理 } • switch ステートメント • switch (チェック対象) { 対象となる値1 { チェック対象が値1の時の処理 ; break ; } ... 対象となる値n { チェック対象が値nの時の処理 ; break ; } default { チェック対象が1..nの何れでもない時の処理 } } 19
  • 20. 繰り返し • while ステートメント • 条件を満たすまでループし続ける • do ... while ステートメント • 条件を満たすまでループし続ける • for ステートメント • インデックス(番号)付きで n 回(n 個)繰り返す • foreach ステートメント • 集合(コレクション)の要素それぞれに対して処理を行う(名前付き) • Foreach-Object (%) • 集合(コレクション)の要素それぞれに対して処理を行う(自動変数) 20
  • 21. スクリプトを実行するための事前準備 • スクリプトの実行を許可する • とりあえずスクリプトを作成するコンピューター上で以下を実行 – Set-ExecutionPolicy RemoteSigned • PowerShell Remoting を有効化する • リモート接続が必要な場合は以下を実行 (検証環境向け) – 接続先 : Enable-PSRemoting -Force – 接続元 : Set-Item WSMan:¥localhost¥Client¥TrustedHosts -Value * • 詳細は後述 21
  • 25. PowerShell スクリプト • スクリプトファイル • 基本的に、コンソール上で実行する場合と同様のコマンドを記述 – 必要な処理(コマンドレット等)を列挙 • 人が考えてコマンド実行していた部分は、条件分岐やフィルタ、 エラー処理等として記述 • ps1 ファイルとして保存 – UTF-8 を推奨 • PowerShell ホストを介してスクリプトを実行 – PowerShell Console 上からスクリプトファイルを実行 – powershell.exe 起動時にスクリプトファイルを指定して実行 25
  • 26. スクリプトに記述する処理 • やりたいことを実現するための処理 • データ(操作対象)を取得 • データ(操作対象)から不要なものを除外(フィルタリング) • 残った項目(必要なもの)それぞれに対して処理を実行 + • スクリプトの動作をサポートする処理 • エラーハンドリング • 外部の状態に応じて処理を実行 • 結果の通知 / ロギング • 認証情報の取得・保持 • リモート接続・リモート処理 26
  • 27. スクリプトの記述レベル • 実行時の状況に合ったスクリプトを作成、記述する • システムが自動で実行する(人の手を介さない) – 途中で止まらない(入力待ちにならない) – 最後まで正しく実行される、あるいは途中で正しく止まる – 処理内容・処理結果を後から追跡できる • 一般ユーザーが実行する – 分かり易いメッセージを出力する(あるいは、何も出力しない) – 実行方法、実行形式をミスしても問題が起きないようにする • 作成者以外の IT 管理者が実行する • 作成者のみが利用する – 後からメンテナンスできるよう最低限コメントを記載する – (場合によっては)エラー処理は考慮しない 27
  • 28. やりたいことを実現するための処理 • 処理の基本 • 取得(入力)して、抽出して、処理(または出力)する • 複数のコマンドレット、関数等の間で、対象(オブジェクト)を受け渡す • オブジェクトの受け渡し • 引数として入力し、出力を次のコマンドの引数へ渡す – $a = <Cmdlet1> – <Cmdlet2> $a • パイプラインを使用する – <Cmdlet1> | <Cmdlet2> 28
  • 29. パイプラインの処理 • <Cmdlet1> | <Cmdlet2> | <Cmdlet3> • Cmdlet1 の出力オブジェクト全体が Cmdlet2 に渡されるわけではない • Cmdlet1 の出力がコレクション(配列)の場合 1. <Cmdlet1> の出力の一つ目のオブジェクトが <Cmdlet2> に渡される 2. <Cmdlet2> は一つ目のオブジェクトを処理し、<Cmdlet3> へ渡す 3. <Cmdlet3> でも一つ目のオブジェクトが処理される 4. 上記を、すべてのオブジェクトに対して実行 ※はじめは、あまり気にしなくても OK 29 Demo 04
  • 30. Foreach-Object • パイプラインの中での繰り返し処理 • 通常は Foreach-Object を使用 • エイリアスは %, foreach – foreach ステートメントと混同しないように注意 • オブジェクトの配列を受け取り、各要素に処理<scriptblock>を実行 – Foreach-Object <scriptblock> – <scriptblock>のなかでは、自動変数 $_ に各オブジェクトが設定される 30 Demo 05
  • 31. データ(オブジェクト)の取得 • 操作対象となるオブジェクトを取得する • オブジェクト、またはオブジェクトの集合(配列、コレクション、etc...) • 専用のコマンドレットで取得 • Get-ADUser, Get-WindowsFeature, etc... • 汎用のコマンドレットで取得 • Get-Item, Get-ItemProperty, etc... • ファイルから読み込み • Import-CSV, [xml](Get-Content) • 自力でデータソースにアクセスして取得 31
  • 32. ファイルの読み込み • テキストファイルとして読み込む • Get-Content –Path <path> • 1行を1文字列として、文字列の配列を取得 • CSVとして読み込む • Import-CSV –Path <path> [-Encoding <Encode>] [-Delimiter <Delimiter>] • エンコードは極力指定する – ASCII, BigEndianUnicode, Default, OEM, Unicode, UTF32, UTF7, UTF8 • デリミタ(区切り文字)は、必要に応じて指定する – デフォルトはカンマ “,” 32 Demo 06
  • 33. ファイルから読み込む • XMLとして読み込む • [xml](Get-Content –Path <path>) • 文字列から XML オブジェクト(XMLDocument)を生成 33 Demo 07
  • 34. フィルタリング • オブジェクトを抽出する(絞り込む) • 通常は Where-Object(?)を使用 – Where-Object <scriptblock> – <scriptblock> が $true となるオブジェクトのみを抽出 • ? { $_.Name –eq “suzuki” } ? { $_.Installed } • ? Name –eq “suzuki” ? Installed – 同じフィルタ(条件)を多用するのであれば、filter を作成したほうが良い • 先頭または末尾から抽出する – Select-Object -First <N> – Select-Object -Last <N> • オブジェクトの順序を並び替える – Sort-Object 34
  • 35. ファイルへ出力(保存) • テキストファイルへ出力 • Out-File <path> [-Encoding <Encode>] [-Append] • 追記する場合は -Append スイッチを使用 • リダイレクトは文字コードを指定できないため、通常はこちらを使用 • CSV ファイルへ出力 • Export-CSV –Path <path> [-Encoding <Encode>] [-Append] • オブジェクトのプロパティを CSV 形式で出力 35
  • 36. その他の出力 • Out-Null • パイプラインから渡されたオブジェクトを捨てる(UNIX の /dev/null) • Out-String • パイプラインから渡されたオブジェクトを文字列に変換する • Write-Host • 指定されたオブジェクトを Console へ出力する • パイプラインには何も出力されない • Write-Output • 指定されたオブジェクトを標準ストリーム(パイプライン)へ出力する 36
  • 37. エラーハンドリング • スクリプト実行時、エラーが発生する要因はたくさんある • ディスク容量不足 • ネットワーク切断 • 通信先のサービスダウン • 日付、時刻、起動時間(起動後経過時間) • スクリプトの不具合(仕様・実装) • 処理に失敗しても致命的な状態にならないことが重用 • 破壊的な操作を記述する場合は十分にチェックする – 破壊的な操作:対象の状態を変更する操作(追加、削除、データ変更等) – 非破壊的な操作:対象の状態を変更しない操作(何度実行しても影響がない) 37
  • 38. エラーメッセージを出力する • エラーとしてメッセージを出力する • Write-Error • 標準エラーストリームへ出力される • エラー扱いとなる($ErrorActionPreference の影響を受ける) • エラーの他にも出力可能 • Write-Warning ストリーム 3 へ出力 • Write-Verbose ストリーム 4 へ出力 • Write-Debug ストリーム 5 へ出力 38
  • 39. エラー発生時の動作 • エラー発生時 • デフォルトではスクリプトの実行を継続しようとする – スクリプト実行環境として継続が可能な場合 • $ErrorActionPreference の値により制御される – SilentlyContinue: エラーメッセージを抑止して継続 – Continue : エラーメッセージを出力して継続 – Stop : 実行を停止 – Inquire : 実行を継続するかユーザーに確認(プロンプト表示) • 共通パラメータ : -ErrorAction – 基本的に、全てのコマンドレットでサポートされるパラメータ – -ErorAction を設定すると $ErrorActionPreference の動作を上書きできる 39 Demo 08
  • 40. エラーの内容を参照する • 自動変数 : $Error • これまでに発生したエラーが保存されている(ArrayList) – $Error[0] : もっとも直近のエラー – $Error[1] : 一つ前のエラー … – $Error[-1] : 一番古いエラー(一番最初に発生したエラー) • 共通パラメータ : -ErrorVariable • 該当のコマンドレット内で発生したエラーを保存する変数を指定可能 • 後からエラーの内容を参照する可能性がある場合は、明示的に別の変数へ 入れておいた方が処理が楽になる(かもしれない) 40 Demo 09
  • 41. エラー発生時に処理を実行(例外処理) • trap • エラーが発生した際に、trap ブロック内の処理を実行 • 処理を実行した後は、エラー発生箇所に戻って処理を再開 – trap が記述されているスコープと同じスコープの後続処理から実行 • continue キーワード – trap した際にエラー出力を抑止する • break キーワード – 後続処理を実行しない(処理を停止する) 41 Demo 10
  • 42. エラー発生時に処理を実行(例外処理) • try ... catch ... finally • try ブロック内のエラーを捕捉し、処理を実行 • catch するエラーオブジェクトを指定可能 – エラーオブジェクトの種類ごとに処理を記述できる • finally ブロックで後処理が可能 – finally ブロックは、エラーが発生したかどうかに関係なく実行される • 構造化されており、trap よりもスコープが明確 42 Demo 11
  • 43. 外部の状態に応じて処理を実行 • スクリプト外の処理状態に応じて、処理を実行する • 別のスクリプトが出力したファイルを利用する • OS やサービス等の状態に応じて処理を実行する • 待ち合わせる方法 • 特定の状態になるまで、スクリプト内部でチェックしながら待つ – コマンドレットによっては -Wait パラメータを利用可能 • 繰り返しタスクとしてスクリプトを登録し、特定の状態のときのみ処理を 実行する • イベントハンドラを登録し、イベントをトリガーに実行する • 外部の処理を含めた処理全体をワークフローとして記述する 43
  • 44. イベントによる制御 • イベント • オブジェクトの状態変化 • イベントトリガーで処理を実施 • イベントのサブスクライブを行うことで、イベントが発生した際に通知を 受け取ることが可能 • 特定のイベントが発生した際に実行する処理を、イベントハンドラとして 登録 • 例えば • 特定のフォルダーにファイルが配置されたら処理を行う • 特定のプロセスがダウンしたら処理を行う 44 Demo 12
  • 45. 通知 • メールで通知 • Send-MailMessage コマンドレットを使用 • 送信用の SMTP サーバーが別途必要 • イベントログに出力 • Write-EventLog コマンドレットを使用 • イベントソースの指定が必要 – 既存のイベントソースを流用する – 事前に、スクリプト用のイベントソースを登録する 45
  • 46. イベントログへ出力 • イベントソースを登録 • New-EventLog -LogName <LogName> -Source <SourceName> – 既存の <LogName> を指定すると、<SourceName> が登録される – 存在しない <LogName> を指定すると、新規にイベントログを作成する • 場合によっては管理者権限が必要 • イベントログの出力 • Write-EventLog -LogName <LogName> -EntryType <Type> -Source <SourceName> -EventId <N> -Message <Message> • <Type> は Error, Warning, Information, SuccessAudit, FailureAudit 46 Demo 13
  • 47. 認証情報の取得・保存 • 認証情報の取得 • Get-Credential でプロンプトから取得 • ユーザー名とパスワードから PSCredential オブジェクトを生成 • PSCredential 内のパスワード • System.Security.SecureString として保持 • ファイルに保存する場合は、Convert が必要 – ConvertFrom-SecureString – ConvertTo-SecureString – ファイルのアクセス権に注意 • 実行ユーザーが変わる場合は注意 • 実行ユーザーは生パスワードを取得可能 47 Demo 14
  • 48. リモート接続・リモート処理 • New-PSSession • Credential 等を指定して、新規のセッションを作成(確立)する • Invoke-Command • New-PSSession で作成したセッションを使用してコマンドを実行する – -Session パラメータ • Invoke-Command で直接セッションを確立して実行することも可能 – Invoke-Command の終了時、セッションも終了する – 同一のセッションを再利用したい場合は、New-PSSession を使用する 48
  • 49. 実行環境の差異に注意する • 作成環境と実行環境は同一とは限らない • OS のバージョンが異なるVersion • PowerShell(WMF)のバージョンが異なる • インストールされている PowerShell モジュールが異なる • インストールされている外部コマンドが異なる • etc... • 異なる環境で実行される可能性を考慮する • 実行環境(PowerShell Version)を制限する • 複数の環境で動作するようスクリプトを記述する • リソースのチェックやエラー制御を適切に行う 49 Demo 15
  • 50. 実行可能な環境を制限する • 特定の PowerShell バージョンを要求する • #requires –version <version> 50 Demo 16
  • 51. バージョンを判定し動作を分ける • PowerShell のバージョンを判定する • $PSVersionTable.PSVersion(PowerShell 2.0 以降) • PowerShell 1.0 は $PSVersionTable が存在しない • OS のバージョンを判定する • Get-WmiObject Win32_OperatingSystem • [System.Environment]::OSVersion 51 Demo 17
  • 52. ストリクトモード • ストリクトモードを設定する • Set-StrictMode –Version Latest • Version 2.0 (現在の Latest) – 初期化されていない変数の参照禁止 – 存在しないプロパティのアクセス禁止 – メソッド形式での関数呼び出し禁止 – 名前なし変数の禁止 • オフにする場合 – Set-StrictMode –Off • 設定したスコープ(と子スコープ)のみ有効 • http://technet.microsoft.com/ja-jp/library/hh849692.aspx 52
  • 54. 作成したスクリプトの動作確認 • PowerShell ISE 上で実行する • スクリプト全体を実行 • 範囲を選択して実行 • ブレークポイントの設定とブレークポイントでの停止 / 再開 • ステップ実行 • コンソールと ISE では、一部動作 (挙動) が異なる • 外部コマンドの呼び出し制約 – $psUnsupportedConsoleApplications • OS と WMF のバージョンの組み合わせによっては、コマンドの出力結果 54 Demo 18
  • 55. デバッグ情報の出力 • トレースレベルの設定 • Set-PSDebug -Trace <N> – 0 : トレース無効 – 1 : 実行されるスクリプトの各行をトレース – 2 : スクリプト行、変数の代入、関数呼び出し、スクリプトをトレース • 自動変数 • $DebugPreference と $DebugPreference • 共通パラメータ • -Debug と -Verbose 55
  • 57. スクリプトの実行許可 • スクリプトの実行やコンフィグレーションのロード • 実行ポリシー (Execution Policy) によって制御される • 既定値では、スクリプトの実行が禁止されている – Windows Server 2012 R2 以外 • 実行ポリシーの確認と変更 • Get-ExecutionPolicy / Set-ExecutionPolicy • グループポリシーによる設定 – コンピューターポリシー / ユーザーポリシー • PowerShell 起動時のオプションで指定 – powershell.exe -ExecutionPolicy <Policy> 57
  • 58. 実行ポリシー • 実行ポリシーは以下の 6 種類 (5 段階 + “未定義”) • Restricted : スクリプトの実行を禁止する • AllSigned : 有効な署名付きのスクリプトのみ実行可能 • RemoteSigned : ローカルのスクリプトは無条件に実行可能 リモートから取得したスクリプトには署名が必要 • Unrestricted : スクリプトは実行可能 (一部警告表示あり) • Bypass : スクリプトは実行可能 (警告表示なし) • Undefined : 未定義 • 規定値は Undefined • Windows Server 2012 R2 のみ RemoteSigned (LocalMachine Scope) • 全てのスコープで Undefined の場合、Restricted とみなされる 58
  • 59. 実行ポリシーのスコープ • 実行ポリシーはスコープごとに設定可能 • MachinePolicy : グループポリシーによる設定 (Computer) • UserPolicy : グループポリシーによる設定 (User) • Process : 実行中の PowerShell セッション内のみ有効 • CurrentUser : ログインユーザーの設定 (レジストリに格納) • LocalMachine : ローカルコンピューターの設定 (レジストリに格納) • 上位スコープの設定が優先される • 基本的には管理者権限で設定を行う • Process / CurrentUser スコープは一般ユーザー権限で設定変更可能 • LocalMachine スコープでスクリプト実行を禁止していても、Process ス コープで実行を許可することで、一時的なスクリプトの実行が可能 59
  • 60. リモート接続の構成 • リモート コンピューターへ接続して操作を行う • WS-Management を使用してリモートコンピューターの WinRM (Windows Remote Management) サービスへ接続する • 事前にリモート接続の構成が必要 – Windows Server 2012 R2 では、同一セグメントからのリモート接続が デフォルトで許可されている • とりあえず接続したい場合は以下を実行 (検証環境向け) – 接続先 : Enable-PSRemoting -Force – 接続元 : Set-Item WSMan:¥localhost¥Client¥TrustedHosts -Value * – 本番環境へ適用する際は、設定の意味を理解してセキュリティを考慮する • Get-Help about_Remote – http://technet.microsoft.com/en-us/library/hh847900.aspx 60
  • 61. リモート接続の要件 • リモート接続の要件を満たすようコンピューターを構成する • WinRM サービスが起動している • WinRM のエンドポイントが適切に構成されている • Windows Firewall やその他の Firewall 製品で通信が許可されている – ネットワークロケーションがパブリック ネットワークの場合、PowerShell の バージョン / OS によって Enable-PSRemoting の挙動が異なるので注意 • 接続先コンピューターの Administrators グループに所属しているか、 権限が適切に構成されている • 接続先に対する資格情報の送信が許可されている – ドメインに参加しているか、TrustedHosts が適切に構成されている • Get-Help about_Remote_Requirements – http://technet.microsoft.com/en-us/library/hh847859.aspx 61
  • 62. リモート接続時の注意点 • PowerShell のバージョンによりセッションの扱いが異なる • PowerShell 2.0 / WinRM 2.0 では接続元側でセッション情報を保持 • PowerShell 3.0 / WinRM 3.0 以降は接続先側でセッション情報を保持 – セッションを切断し、別の接続元から同一のセッションへ再接続が可能 • トラブルが少ない構成 • ドメイン環境 • Domain Admins グループのユーザーを使用 • WMF (Windows Management Framework) 3.0 (PowerShell 3.0 / WinRM 3.0) 以降を使用 62
  • 63. 実行方法 • ユーザーが任意に実行 • スクリプトファイルを powershell.exe から実行 • 登録されたタスクを手動実行 • 決められた時刻に自動実行(スケジュールタスク) • タスクスケジューラに登録 • 特定の状態に変化したら実行(イベント) • イベントトリガーで実行 63
  • 64. タスクスケジューラからスクリプトを実行 • タスクスケジューラにタスクを登録 • 実行するコマンド(実行ファイル)は powershell.exe • -Command “<script path>” を指定 • 実行ユーザーに注意する • スクリプト内の処理を実行する権限があるか – 特権モード、所属グループ、NTFS ACL、委任、etc... • 保存された Credential を使用する場合は、実行ユーザーで Credential が 保存されているか • 実行環境(プロファイル)に問題はないか – プロファイル、UAC、etc... 64
  • 65. Azure の操作を自動化 • Azure サービスのコントロール • Azure PowerShell を使用 • 仮想マシン内の OS のコントロールは、通常の OS と同様 • サービスコントロール用の認証情報 • Add-AzureAccount ではなく、Get-AzurePublishSettingsFile を使う – Azure Active Directory 認証ではなく、証明書認証 – Azure AD の認証は 12 時間で Expire するので注意 – 証明書であれば、証明書の有効期限(かつ、サブスクリプションの有効期限) まで利用可能 65
  • 66. Azure の操作を自動化 • Azure AD で認証されている状態 66
  • 69. 単位変換 • バイトの単位 • KB, MB, GB, TB, PB がキーワードとして登録されている – 1KB : 1024 – 1MB : 1048576 – 1GB : 1073741824 – 1TB : 1099511627776 – 1PB : 1125899906842624 • 大文字、小文字は区別されない – 1KB = 1kB = 1Kb = 1kb = 1024 • EB, ZB, YB は変換できない 69
  • 70. 文法やコマンドレットの確認 • 困ったときはヘルプを見る • Get-Help about_* • Get-Help <Cmdlet> -Full • 使えそうなコマンドがないか調べる • Get-Command • <Cmdlet> | Get-Member • <Cmdlet>.GetType() 70
  • 71. まとめ • PowerShell によるスクリプト作成は難しくない • スクリプトの利用用途を考慮して、記述レベルを検討する • 破壊的な捜査を行う前には必ずチェックする • エラー処理は必要に応じて実施する • 困ったらとりあえず動かしてみる(検証環境で) 71
  • 72. 参考資料 • Scripting with Windows PowerShell(TechNet) • http://technet.microsoft.com/en-us/library/bb978526.aspx • Windows PowerShell によるWindows Server 管理の 自動化 v4.0 2014.03.13 更新版(安納さん) • http://www.slideshare.net/junichia/windows-powershell-30- windows-server-2012 • Windows PowerShell ポケットリファレンス(牟田口さん) • http://gihyo.jp/book/2013/978-4-7741-5542-5 ※TechNet は英語版のページを参照しましょう 72