AWS Systems Manager
ユーザーガイド

チュートリアル: Run Command で AWS Tools for Windows PowerShell を使用する

以下の例では、Tools for Windows PowerShell を使用してコマンドとコマンドパラメータに関する情報を表示する方法、コマンドを実行する方法、これらのコマンドのステータスを確認する方法を示しています。このウォークスルーには、定義済み Systems Manager ドキュメントごとの例が含まれています。

重要

信頼されている管理者のみが、このトピックで示される Systems Manager で事前設定されたドキュメントの使用を許可されます。Systems Manager ドキュメントで指定されるコマンドまたはスクリプトは、管理権限でインスタンスで実行されます。ユーザーに、事前定義済みの Systems Manager ドキュメント (AWS から始まるドキュメント) を実行する権限がある場合、そのユーザーには、インスタンスへの管理者アクセス権もあります。他のすべてのユーザーについては、制限付きドキュメントを作成し、そのドキュメントを特定のユーザーと共有する必要があります。Run Command へのアクセス制限の詳細については、「Systems Manager のアクセス設定」を参照してください。

AWS Tools for Windows PowerShell セッションの設定を定義する

ローカルコンピュータで AWS Tools for Windows PowerShell を開き、以下のコマンドを実行して認証情報を指定します。ユーザーは、設定するインスタンスの管理者権限を持っているか、IAM で適切なアクセス権を付与されている必要があります。詳細については、「Systems Manager の前提条件」を参照してください。

Set-AWSCredentials –AccessKey key_name –SecretKey key_name

次のコマンドを実行して、PowerShell セッションのリージョンを設定します。この例では US East (Ohio) Region (us-east-2) を使用しています。Run Command は現在、Amazon Web Services General ReferenceAWS Systems Manager に記載されている AWS リージョンで利用できます。

Set-DefaultAWSRegion -Region us-east-2

利用可能なすべてのドキュメントを表示する

このコマンドは、アカウントに使用できるすべてのドキュメントを一覧表示します。

Get-SSMDocumentList

PowerShell コマンドまたはスクリプトを実行する

Run Command と AWS-RunPowerShell ドキュメントを使用すると、リモートデスクトップを使用して EC2 インスタンスにログオンしているかのように、コマンドまたはスクリプトをインスタンスで実行できます。コマンドを発行することも、コマンドを実行するためのローカルスクリプトのパスを入力することもできます。

注記

Run Command を使用してスクリプトを呼び出すときに使用するサーバーとインスタンスの再起動については、「スクリプトからのマネージドインスタンスの再起動」を参照してください。

説明と使用可能なパラメータを表示する

Get-SSMDocumentDescription -Name "AWS-RunPowerShellScript"

パラメータの詳細情報を表示する

Get-SSMDocumentDescription -Name "AWS-RunPowerShellScript" | select -ExpandProperty Parameters

AWS-RunPowerShellScript ドキュメントを使用してコマンドを送信する

次のコマンドでは、2 つのインスタンスの C:\Users ディレクトリの内容と C:\ ディレクトリの内容が表示されます。

$runPSCommand=Send-SSMCommand -InstanceId @('Instance-ID', 'Instance-ID') -DocumentName AWS-RunPowerShellScript -Comment 'Demo AWS-RunPowerShellScript with two instances' -Parameter @{'commands'=@('dir C:\Users', 'dir C:\')}

コマンドリクエストの詳細を取得する

次のコマンドでは、コマンド ID を使用して、2 つのインスタンスでのコマンド実行に関するステータスを取得しています。この例では、前のコマンドで返されたコマンド ID を使用しています。

Get-SSMCommand -CommandId $runPSCommand.CommandId

この例のコマンドのステータスは Success、Pending、InProgress のいずれかになります。

インスタンスごとのコマンド情報を取得する

次のコマンドでは、前のコマンドのコマンド ID を使用して、インスタンスごとのコマンド実行に関するステータスを取得しています。

Get-SSMCommandInvocation -CommandId $runPSCommand.CommandId

特定インスタンスのコマンド情報と応答データを取得する

次のコマンドは、特定インスタンスについて、元の Send-SSMCommand の出力を返します。

Get-SSMCommandInvocation -CommandId $runPSCommand.CommandId -Details $true -InstanceId Instance-ID | select -ExpandProperty CommandPlugins

コマンドをキャンセルする

次のコマンドでは、AWS-RunPowerShellScript ドキュメントに対する Send-SSMComand をキャンセルしています。

$cancelCommandResponse=Send-SSMCommand -InstanceId @('Instance-ID','Instance-ID') -DocumentName AWS-RunPowerShellScript -Comment 'Demo AWS-RunPowerShellScript with two instances' -Parameter @{'commands'='Start-Sleep –Seconds 120; dir C:\'} Stop-SSMCommand -CommandId $cancelCommandResponse.CommandId Get-SSMCommand -CommandId $cancelCommandResponse.CommandId

コマンドの状態を確認する

次のコマンドでは、Cancel コマンドのステータスを確認しています。

Get-SSMCommand -CommandId $cancelCommandResponse.CommandId

AWS-InstallApplication ドキュメントを使用してアプリケーションをインストールする

Run Command と AWS-InstallApplication ドキュメントを使用して、インスタンスでアプリケーションのインストール、修復、またはアンインストールを行うことができます。このコマンドには、MSI のパスまたはアドレスが必要です。

注記

Run Command を使用してスクリプトを呼び出すときに使用するサーバーとインスタンスの再起動については、「スクリプトからのマネージドインスタンスの再起動」を参照してください。

説明と使用可能なパラメータを表示する

Get-SSMDocumentDescription -Name "AWS-InstallApplication"

パラメータの詳細情報を表示する

Get-SSMDocumentDescription -Name "AWS-InstallApplication" | select -ExpandProperty Parameters

AWS-InstallApplication ドキュメントを使用してコマンドを送信する

次のコマンドでは、無人モードでインスタンスに Python のバージョンをインストールし、出力を C: ドライブにあるローカルテキストファイルに記録します。

$installAppCommand=Send-SSMCommand -InstanceId Instance-ID -DocumentName AWS-InstallApplication -Parameter @{'source'='https://www.python.org/ftp/python/2.7.9/python-2.7.9.msi'; 'parameters'='/norestart /quiet /log c:\pythoninstall.txt'}

インスタンスごとのコマンド情報を取得する

次のコマンドでは、コマンド ID を使用して、コマンド実行のステータスを取得します。

Get-SSMCommandInvocation -CommandId $installAppCommand.CommandId -Details $true

特定インスタンスのコマンド情報と応答データを取得する

次のコマンドでは、Python のインストール結果が返されます。

Get-SSMCommandInvocation -CommandId $installAppCommand.CommandId -Details $true -InstanceId Instance-ID | select -ExpandProperty CommandPlugins

AWS-InstallPowerShellModule JSON ドキュメントを使用して PowerShell モジュールをインストールする

Run Command を使用して、EC2 インスタンスに PowerShell モジュールをインストールできます。PowerShell モジュールの詳細については、「Windows PowerShell モジュール」を参照してください。

説明と使用可能なパラメータを表示する

Get-SSMDocumentDescription -Name "AWS-InstallPowerShellModule"

パラメータの詳細情報を表示する

Get-SSMDocumentDescription -Name "AWS-InstallPowerShellModule" | select -ExpandProperty Parameters

PowerShell モジュールをインストールする

次のコマンドでは、EZOut.zip ファイルをダウンロードしてインストールし、XPS ビューアをインストールするための追加コマンドも実行しています。最後に、このコマンドの出力が、demo-ssm-output-bucket という名前の Amazon S3 バケットにアップロードされます。

$installPSCommand=Send-SSMCommand -InstanceId Instance-ID -DocumentName AWS-InstallPowerShellModule -Parameter @{'source'='https://gallery.technet.microsoft.com/EZOut-33ae0fb7/file/110351/1/EZOut.zip';'commands'=@('Add-WindowsFeature -name XPS-Viewer -restart')} -OutputS3BucketName demo-ssm-output-bucket

インスタンスごとのコマンド情報を取得する

次のコマンドでは、コマンド ID を使用して、コマンド実行のステータスを取得します。

Get-SSMCommandInvocation -CommandId $installPSCommand.CommandId -Details $true

インスタンスのコマンド情報と応答データを取得する

次のコマンドは、特定のコマンド ID について、元の Send-SSMCommand の出力を返します。

Get-SSMCommandInvocation -CommandId $installPSCommand.CommandId -Details $true | select -ExpandProperty CommandPlugins

AWS-JoinDirectoryServiceDomain JSON ドキュメントを使用してインスタンスをドメインに結合する

Run Command を使用すると、AWS Directory Service ドメインにインスタンスをすばやく結合できます。このコマンドを実行する前に、ディレクトリを作成する必要があります。また、AWS Directory Service の詳細について理解することをお勧めします。詳細については、「AWS Directory Service とは何ですか?」を参照してください。

現在は、ドメインにインスタンスを結合することしかできません。ドメインからインスタンスを削除することはできません。

注記

Run Command を使用してスクリプトを呼び出すときに使用するサーバーとインスタンスの再起動については、「スクリプトからのマネージドインスタンスの再起動」を参照してください。

説明と使用可能なパラメータを表示する

Get-SSMDocumentDescription -Name "AWS-JoinDirectoryServiceDomain"

パラメータの詳細情報を表示する

Get-SSMDocumentDescription -Name "AWS-JoinDirectoryServiceDomain" | select -ExpandProperty Parameters

ドメインにインスタンスを結合する

次のコマンドでは、指定の AWS Directory Service ドメインにインスタンスを結合し、生成された出力をすべて Amazon S3 バケットにアップロードします。

$domainJoinCommand=Send-SSMCommand -InstanceId Instance-ID -DocumentName AWS-JoinDirectoryServiceDomain -Parameter @{'directoryId'='d-9067386b64'; 'directoryName'='ssm.test.amazon.com'; 'dnsIpAddresses'=@('172.31.38.48', '172.31.55.243')} -OutputS3BucketName demo-ssm-output-bucket

インスタンスごとのコマンド情報を取得する

次のコマンドでは、コマンド ID を使用して、コマンド実行のステータスを取得します。

Get-SSMCommandInvocation -CommandId $domainJoinCommand.CommandId -Details $true

インスタンスのコマンド情報と応答データを取得する

このコマンドは、特定のコマンド ID について、元の Send-SSMCommand の出力を返します。

Get-SSMCommandInvocation -CommandId $domainJoinCommand.CommandId -Details $true | select -ExpandProperty CommandPlugins

AWS-ConfigureCloudWatch ドキュメントを使用して Windows メトリクスを Amazon CloudWatch に送信する

アプリケーション、システム、セキュリティ、および Windows イベント トレーシング (ETW) ログの Windows Server メッセージを Amazon CloudWatch ログに送信することができます。Systems Manager では、ロギングを初めて有効にすると、アプリケーション、システム、セキュリティ、および ETW ログについて、ログのアップロードを開始した時点から 1 分以内に作成されたすべてのログが送信されます。この時点より前に発生したログは含まれません。ロギングを無効にし、後で再度有効にすると、Systems Manager では無効化の時点からのログが送信されます。カスタムログファイルおよび Internet Information Services (IIS) ログについては、Systems Manager はログファイルを最初から読み取ります。さらに、Systems Manager ではパフォーマンスカウンタデータを Amazon CloudWatch に送信することもできます。

以前に EC2Config で CloudWatch 統合を有効にした場合は、C:\Program Files\Amazon\EC2ConfigService\Settings\AWS.EC2.Windows.CloudWatch.json ファイルにローカルに保存されているインスタンスに関する設定は、Systems Manager の設定によって上書きされます。EC2Config を使用して単一インスタンスのパフォーマンスカウンタおよびログを管理する方法の詳細については、「CloudWatch へのパフォーマンスカウンタの送信と CloudWatch Logs へのログの送信」を参照してください。

説明と使用可能なパラメータを表示する

Get-SSMDocumentDescription -Name "AWS-ConfigureCloudWatch"

パラメータの詳細情報を表示する

Get-SSMDocumentDescription -Name "AWS-ConfigureCloudWatch" | select -ExpandProperty Parameters

アプリケーションログを CloudWatch に送信する

次のコマンドでは、インスタンスを設定し、Windows アプリケーションログを CloudWatch に移動します。

$cloudWatchCommand=Send-SSMCommand -InstanceID Instance-ID -DocumentName 'AWS-ConfigureCloudWatch' -Parameter @{'properties'='{"engineConfiguration": {"PollInterval":"00:00:15", "Components":[{"Id":"ApplicationEventLog", "FullName":"AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters":{"LogName":"Application", "Levels":"7"}},{"Id":"CloudWatch", "FullName":"AWS.EC2.Windows.CloudWatch.CloudWatchLogsOutput,AWS.EC2.Windows.CloudWatch", "Parameters":{"Region":"us-east-2", "LogGroup":"My-Log-Group", "LogStream":"i-1234567890EXAMPLE"}}], "Flows":{"Flows":["ApplicationEventLog,CloudWatch"]}}}'}

インスタンスごとのコマンド情報を取得する

次のコマンドでは、コマンド ID を使用して、コマンド実行のステータスを取得します。

Get-SSMCommandInvocation -CommandId $cloudWatchCommand.CommandId -Details $true

特定インスタンスのコマンド情報と応答データを取得する

次のコマンドは、Amazon CloudWatch の設定の結果を返します。

Get-SSMCommandInvocation -CommandId $cloudWatchCommand.CommandId -Details $true -InstanceId Instance-ID | select -ExpandProperty CommandPlugins

AWS-ConfigureCloudWatch ドキュメントを使用してパフォーマンスカウンタを CloudWatch に送信する

次のデモンストレーションコマンドは、パフォーマンスカウンタを CloudWatch にアップロードします。詳細については、「Amazon CloudWatch ドキュメント」を参照してください。

$cloudWatchMetricsCommand=Send-SSMCommand -InstanceID Instance-ID -DocumentName 'AWS-ConfigureCloudWatch' -Parameter @{'properties'='{"engineConfiguration": {"PollInterval":"00:00:15", "Components":[{"Id":"PerformanceCounter", "FullName":"AWS.EC2.Windows.CloudWatch.PerformanceCounterComponent.PerformanceCounterInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters":{"CategoryName":"Memory", "CounterName":"Available MBytes", "InstanceName":"", "MetricName":"AvailableMemory", "Unit":"Megabytes","DimensionName":"", "DimensionValue":""}},{"Id":"CloudWatch", "FullName":"AWS.EC2.Windows.CloudWatch.CloudWatch.CloudWatchOutputComponent,AWS.EC2.Windows.CloudWatch", "Parameters":{"AccessKey":"", "SecretKey":"","Region":"us-east-2", "NameSpace":"Windows-Default"}}], "Flows":{"Flows":["PerformanceCounter,CloudWatch"]}}}'}

AWS-ConfigureWindowsUpdate ドキュメントを使用して Windows 自動更新を有効/無効にする

Run Command と AWS-ConfigureWindowsUpdate ドキュメントを使用すると、Windows インスタンスに対する Windows 自動更新を有効または無効にすることができます。このコマンドは、指定の日時に Windows 更新プログラムがダウンロードおよびインストールされるように Windows Update エージェントを設定します。更新プログラムで再起動が必要になった場合は、更新プログラムのインストールから 15 分後にコンピュータが自動的に再起動されます。このコマンドを使用すると、Windows Update で更新プログラムの有無が確認され、インストールは実行されないように設定することもできます。AWS-ConfigureWindowsUpdate ドキュメントは、Windows Server 2008、2008 R2、2012、2012 R2 および 2016 と互換性があります。

説明と使用可能なパラメータを表示する

Get-SSMDocumentDescription –Name "AWS-ConfigureWindowsUpdate"

パラメータの詳細情報を表示する

Get-SSMDocumentDescription -Name "AWS-ConfigureWindowsUpdate" | select -ExpandProperty Parameters

Windows 自動更新を有効にする

次のコマンドでは、毎日 10:00 pm に自動的に更新プログラムがダウンロードおよびインストールされるように Windows Update を設定します。

$configureWindowsUpdateCommand = Send-SSMCommand -InstanceId Instance-ID -DocumentName 'AWS-ConfigureWindowsUpdate' -Parameters @{'updateLevel'='InstallUpdatesAutomatically'; 'scheduledInstallDay'='Daily'; 'scheduledInstallTime'='22:00'}

Windows 自動更新を有効にするコマンドのステータスを表示する

次のコマンドでは、コマンド ID を使用して、Windows 自動更新を有効にするためのコマンド実行のステータスを取得します。

Get-SSMCommandInvocation -Details $true -CommandId $configureWindowsUpdateCommand.CommandId | select -ExpandProperty CommandPlugins

Windows 自動更新を無効にする

次のコマンドでは、システムによって更新プログラムの有無が確認されても自動的にはインスタンスが更新されないように、Windows Update の通知レベルを引き下げます。

$configureWindowsUpdateCommand = Send-SSMCommand -InstanceId Instance-ID -DocumentName 'AWS-ConfigureWindowsUpdate' -Parameters @{'updateLevel'='NeverCheckForUpdates'}

Windows 自動更新を無効にするコマンドのステータスを表示する

次のコマンドでは、コマンド ID を使用して、Windows 自動更新を無効にするためのコマンド実行のステータスを取得します。

Get-SSMCommandInvocation -Details $true -CommandId $configureWindowsUpdateCommand.CommandId | select -ExpandProperty CommandPlugins

AWS-UpdateEC2Config ドキュメントを使用して EC2Config を更新する

Run Command と AWS-EC2ConfigUpdate ドキュメントを使用すると、Windows インスタンスで実行されている EC2Config サービスを更新できます。このコマンドでは、EC2Config サービスを最新バージョンまたは指定バージョンに更新できます。

説明と使用可能なパラメータを表示する

Get-SSMDocumentDescription -Name "AWS-UpdateEC2Config"

パラメータの詳細情報を表示する

Get-SSMDocumentDescription -Name "AWS-UpdateEC2Config" | select -ExpandProperty Parameters

EC2Config を最新バージョンに更新する

Send-SSMCommand -InstanceId Instance-ID -DocumentName "AWS-UpdateEC2Config"

インスタンスのコマンド情報と応答データを取得する

このコマンドは、前回の Send-SSMCommand からの指定されたコマンド出力を返します。

Get-SSMCommandInvocation -CommandId ID -Details $true -InstanceId Instance-ID | select -ExpandProperty CommandPlugins

EC2Config を特定バージョンに更新する

以下のコマンドは、古いバージョンに EC2Config をダウングレードします。

Send-SSMCommand -InstanceId Instance-ID -DocumentName "AWS-UpdateEC2Config" -Parameter @{'version'='3.8.354'; 'allowDowngrade'='true'}

Run Command を使用した Windows の更新プログラムの管理

Run Command には、Amazon EC2 Windows インスタンスの更新プログラムを管理するために役立つ 3 つのドキュメントが含まれています。

  • AWS-FindWindowsUpdates — インスタンスをスキャンし、不足している更新プログラムを確認します。

  • AWS-InstallMissingWindowsUpdates — 不足している更新プログラムを EC2 インスタンスにインストールします。

  • AWS-InstallSpecificUpdates — 特定の更新プログラムをインストールします。

注記

Run Command を使用してスクリプトを呼び出すときに使用するサーバーとインスタンスの再起動については、「スクリプトからのマネージドインスタンスの再起動」を参照してください。

以下の例では、指定した Windows Update 管理タスクを実行する方法を示しています。

Send-SSMCommand -InstanceId Instance-ID -DocumentName 'AWS-FindWindowsUpdates' -Parameters @{'UpdateLevel'='All'}

特定の Windows 更新プログラムをインストールします。

Send-SSMCommand -InstanceId Instance-ID -DocumentName 'AWS-InstallSpecificWindowsUpdates' -Parameters @{'KbArticleIds'='123456,KB567890,987654'}

不足している重要な Windows 更新プログラムをインストールします。

Send-SSMCommand -InstanceId Instance-ID -DocumentName 'AWS-InstallMissingWindowsUpdates' -Parameters @{'UpdateLevel'='Important'}

不足している Windows Update をインストールします (特定の除外あり)。

Send-SSMCommand -InstanceId Instance-ID -DocumentName 'AWS-InstallMissingWindowsUpdates' -Parameters @{'UpdateLevel'='All';'ExcludeKbArticleIds'='KB567890,987654'}