チュートリアル: 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 セッションの設定を構成する
- 利用可能なすべてのドキュメントを表示します。
- PowerShell コマンドまたはスクリプトを実行する
- AWS-InstallApplication ドキュメントを使用してアプリケーションをインストールする
- AWS-InstallPowerShellModule JSON ドキュメントを使用して PowerShell モジュールをインストールする
- AWS-JoinDirectoryServiceDomain JSON ドキュメントを使用してマネージドノードをドメインに結合
- AWS-ConfigureCloudWatch ドキュメントを使用して Windows メトリクスを Amazon CloudWatch Logs に送信する
- AWS-UpdateEC2Config ドキュメントを使用して EC2Config を更新する
- AWS-ConfigureWindowsUpdate ドキュメントを使用して、Windows の自動更新を有効または無効にする
- Run Command を使用した Windows の更新プログラムの管理
AWS Tools for Windows PowerShell セッションの設定を構成する
認証情報を指定する
ローカルコンピュータで Tools for Windows PowerShell を開き、次のコマンドを実行して認証情報を指定します。ユーザーは、設定するマネージドノードの管理者アクセス許可を持っているか、AWS Identity and Access Management (IAM) で適切なアクセス許可を付与されている必要があります。詳細については、「AWS Systems Manager のセットアップ」を参照してください。
Set-AWSCredentials –AccessKey
key-name
–SecretKeykey-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')} ` -OutputS3BucketNameamzn-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
')} ` -OutputS3BucketNameamzn-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 管理タスクを実行する方法を示しています。
不足しているすべての Windows 更新プログラムを検索します。
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'}