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

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

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

重要

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

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

認証情報を指定する

ローカルコンピュータで Tools for Windows PowerShell を開き、次のコマンドを実行して認証情報を指定します。ユーザーは、設定するマネージドノードの管理者アクセス許可を持っているか、AWS Identity and Access Management (IAM) で適切なアクセス許可を付与されている必要があります。詳細については、「AWS Systems Manager のセットアップ」を参照してください。

Set-AWSCredentials –AccessKey key-name –SecretKey key-name
デフォルト を設定するAWS リージョン

次のコマンドを実行して、PowerShell セッションのリージョンを設定します。この例では、米国東部 (オハイオ) リージョン (us-east-2) を使用しています。Run Command は、「Amazon Web Services 全般のリファレンス」の「Systems Manager サービスエンドポイント」に記載されている AWS リージョン で利用できます。

Set-DefaultAWSRegion ` -Region us-east-2

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

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

Get-SSMDocumentList

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

Run Command と AWS-RunPowerShell ドキュメントを使用すると、マネージドノード上で、あたかもローカルにログオンしているかのように、任意のコマンドやスクリプトを実行することができます。コマンドを発行することも、コマンドを実行するためのローカルスクリプトのパスを入力することもできます。

注記

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

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

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

$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 を使用して、マネージドノードに PowerShell モジュールをインストールできます。PowerShell モジュールの詳細については、「Windows PowerShell モジュール」を参照してください。

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

Get-SSMDocumentDescription ` -Name "AWS-InstallPowerShellModule"

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

Get-SSMDocumentDescription ` -Name "AWS-InstallPowerShellModule" | Select -ExpandProperty Parameters

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

次のコマンドでは、EZOut.zip ファイルをダウンロードしてインストールし、XPS ビューアをインストールするための追加コマンドも実行しています。最後に、このコマンドの出力が、「amzn-s3-demo-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 amzn-s3-demo-bucket
マネージドノードごとのコマンド情報を取得

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

Get-SSMCommandInvocation ` -CommandId $installPSCommand.CommandId ` -Details $true
マネージドノードのコマンド情報と応答データを取得

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

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 Simple Storage Service (Amazon 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 amzn-s3-demo-bucket
マネージドノードごとのコマンド情報を取得

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

Get-SSMCommandInvocation ` -CommandId $domainJoinCommand.CommandId ` -Details $true
マネージドノードのコマンド情報と応答データを取得

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

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

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

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

以前に EC2Config で CloudWatch 統合を有効にした場合、Systems Manager の設定は、マネージドノードのローカルに保存された C:\Program Files\Amazon\EC2ConfigService\Settings\AWS.EC2.Windows.CloudWatch.json ファイル内のに設定よりも優先されます。EC2Config を使用して単一マネージドノードのパフォーマンスカウンターとログを管理する方法の詳細については、 「Amazon CloudWatch ユーザーガイド」「CloudWatch エージェントを使用して Amazon EC2 インスタンスとオンプレミスサーバーからメトリクスとログを収集する」 を参照してください。

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

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 ユーザーガイドを参照してください。

$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 Agent を設定します。更新プログラムで再起動が必要になった場合は、更新プログラムのインストールから 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 マネージドノードの更新を管理できます。このコマンドは、マネージドノードに不足している更新プログラムをスキャンまたはインストールし、必要に応じてインストール後に再起動します。また、環境にインストールする更新の適切な分類と重大度レベルを指定することもできます。

注記

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'}