チュートリアル: Run Command で AWS Tools for Windows PowerShell を使用する - 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 用に管理者以外の IAM ユーザーおよびグループを作成する」を参照してください。

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

認証情報を指定する

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

Set-AWSCredentials –AccessKey key-name –SecretKey key-name

デフォルトの AWS リージョンを設定する

次のコマンドを実行して、PowerShell セッションのリージョンを設定します。この例では US East (Ohio) Region (us-east-2) を使用しています。Run Command は現在、Amazon Web Services General Referenceの「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 ` -InstanceIds @("instance-ID-1", "instance-ID-2") ` -DocumentName "AWS-RunPowerShellScript" ` -Comment "Demo AWS-RunPowerShellScript with two instances" ` -Parameter @{'commands'=@('dir C:\Users', 'dir C:\')}

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

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

Get-SSMCommand -CommandId $runPSCommand.CommandId

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

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

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

Get-SSMCommandInvocation -CommandId $runPSCommand.CommandId

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

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

Get-SSMCommandInvocation ` -CommandId $runPSCommand.CommandId ` -Details $true ` -InstanceId instance-ID ` | Select -ExpandProperty CommandPlugins

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

次のコマンドでは、AWS-RunPowerShellScript ドキュメントの Send-SSMCommand をキャンセルします。

$cancelCommand = Send-SSMCommand ` -InstanceIds @("instance-ID-1","instance-ID-2") ` -DocumentName "AWS-RunPowerShellScript" ` -Comment "Demo AWS-RunPowerShellScript with two instances" ` -Parameter @{'commands'='Start-Sleep –Seconds 120; dir C:\'} Stop-SSMCommand -CommandId $cancelCommand.CommandId

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

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

Get-SSMCommand -CommandId $cancelCommand.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'}

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

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

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」という名前の 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

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

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

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

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

次のコマンドでは、特定の CommandId について、元の 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 ドメインにインスタンスを結合し、生成された出力をすべてサンプルの S3 バケットにアップロードします。

$domainJoinCommand = Send-SSMCommand ` -InstanceId instance-ID ` -DocumentName "AWS-JoinDirectoryServiceDomain" ` -Parameter @{'directoryId'='d-example01'; 'directoryName'='ssm.example.com'; 'dnsIpAddresses'=@('192.168.10.195', '192.168.20.97')} ` -OutputS3BucketName demo-ssm-output-bucket

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

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

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

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

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

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

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

アプリケーション、システム、セキュリティ、および Windows イベントトレーシング (ETW) ログの Windows Server メッセージを Amazon CloudWatch Logs に送信することができます。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":"region", "LogGroup":"my-log-group", "LogStream":"instance-id"}}], "Flows":{"Flows":["ApplicationEventLog,CloudWatch"]}}}'}

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

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

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 User Guide を参照してください。

$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":"region", "NameSpace":"Windows-Default"}}], "Flows":{"Flows":["PerformanceCounter,CloudWatch"]}}}'}

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

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

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

Get-SSMDocumentDescription -Name "AWS-UpdateEC2Config"

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

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

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

$ec2ConfigCommand = Send-SSMCommand -InstanceId instance-ID -DocumentName "AWS-UpdateEC2Config"

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

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

Get-SSMCommandInvocation ` -CommandId $ec2ConfigCommand.CommandId ` -Details $true ` -InstanceId instance-ID ` | Select -ExpandProperty CommandPlugins

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

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

Send-SSMCommand ` -InstanceId instance-ID ` -DocumentName "AWS-UpdateEC2Config" ` -Parameter @{'version'='4.9.3519'; 'allowDowngrade'='true'}

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

Run Command と AWS-ConfigureWindowsUpdate ドキュメントを使用すると、Windows Server インスタンスに対する 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 自動更新を有効にするコマンドのステータスを表示する

次のコマンドでは、CommandId を使用して、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 自動更新を無効にするコマンドのステータスを表示する

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

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

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

Run Command および AWS-InstallWindowsUpdates ドキュメントを使用して、Windows Server の EC2 インスタンスの更新を管理できます。このコマンドは、Windows Server の EC2 インスタンスに不足している更新プログラムをスキャンまたはインストールし、必要に応じてインストール後に再起動します。また、環境にインストールする更新の適切な分類と重大度レベルを指定することもできます。

注記

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

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

Send-SSMCommand ` -InstanceId instance-ID ` -DocumentName "AWS-InstallWindowsUpdates" ` -Parameters @{'Action'='Scan'}

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

Send-SSMCommand ` -InstanceId instance-ID ` -DocumentName "AWS-InstallWindowsUpdates" ` -Parameters @{'Action'='Install';'IncludeKbs'='kb-ID-1,kb-ID-2,kb-ID-3';'AllowReboot'='True'}

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

Send-SSMCommand ` -InstanceId instance-ID ` -DocumentName "AWS-InstallWindowsUpdates" ` -Parameters @{'Action'='Install';'SeverityLevels'='Important';'AllowReboot'='True'}

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

Send-SSMCommand ` -InstanceId instance-ID ` -DocumentName "AWS-InstallWindowsUpdates" ` -Parameters @{'Action'='Install';'ExcludeKbs'='kb-ID-1,kb-ID-2';'AllowReboot'='True'}