逐步解說:使用 AWS Tools for Windows PowerShell 與 Run Command - AWS Systems Manager

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

逐步解說:使用 AWS Tools for Windows PowerShell 與 Run Command

下列範例顯示如何使用 AWS Tools for Windows PowerShell 來檢視有關命令和命令參數、如何執行命令以及如何檢視這些命令狀態的資訊。此逐步解說包含每個預先定義 AWS Systems Manager 文件的範例。

重要

只有信任管理員應受允許使用在這個主題中顯示的 Systems Manager 預先設定的文件。Systems Manager 文件中指定的命令或指令碼會使用在您的受管節點上的管理許可執行。如果使用者有權執行任何預先定義的 Systems Manager 員文件 (任何以開頭的文件 AWS),則該使用者也具有節點的管理員存取權。對於所有其他使用者,您應該建立嚴格的文件和並將它們分享給特定使用者。

設定 AWS Tools for Windows PowerShell 工作階段設

指定您的登入資料。

在本機電腦 PowerShell上開啟 Windows 適用的工具,然後執行下列命令來指定您的認證。您必須擁有要設定之受管理節點的管理員權限,或者您必須在 AWS Identity and Access Management (IAM) 中獲得適當的權限。如需詳細資訊,請參閱 設定 AWS Systems Manager

Set-AWSCredentials –AccessKey key-name –SecretKey key-name
設定預設值 AWS 區域

執行下列命令以設定 PowerShell 工作階段的區域。此範例使用美國東部 (俄亥俄) 區域 (us-east-2)。 Run Command可在中 AWS 區域 列出的 Systems Manager 服務端點中使用Amazon Web Services 一般參考

Set-DefaultAWSRegion ` -Region us-east-2

列出所有可用的文件

此命令會列出可供您帳戶使用的所有文件。

Get-SSMDocumentList

執行 PowerShell 命令或指令碼

您可以使用 Run Command 和 AWS-RunPowerShell 文件,在受管節點上執行任何命令或指令碼,如同您在本機登入一樣。您可以發出命令或在本機指令碼輸入路徑來執行命令。

注意

如需使用 Run Command 呼叫指令碼時重新啟動受管節點的資訊,請參閱 執行命令時處理重新啟動

View the description and available parameters (查看描述和可用參數)

Get-SSMDocumentDescription ` -Name "AWS-RunPowerShellScript"

View more information about parameters (檢視參數的詳細資訊)

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

使用 AWS-RunPowerShellScript 文件來傳送命令

以下命令顯示 "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,以取得在兩個受管節點上命令執行的狀態。此範例使用在之前命令傳回的 CommandId

Get-SSMCommand ` -CommandId $runPSCommand.CommandId

此範例中的命令狀態可以是「成功」、「擱置中」或 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 呼叫指令碼時重新啟動受管節點的資訊,請參閱 執行命令時處理重新啟動

View the description and available parameters (查看描述和可用參數)

Get-SSMDocumentDescription ` -Name "AWS-InstallApplication"

View more information about parameters (檢視參數的詳細資訊)

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 模組

View the description and available parameters (查看描述和可用參數)

Get-SSMDocumentDescription ` -Name "AWS-InstallPowerShellModule"

View more information about parameters (檢視參數的詳細資訊)

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 呼叫指令碼時受管節點的資訊,請參閱 執行命令時處理重新啟動

View the description and available parameters (查看描述和可用參數)

Get-SSMDocumentDescription ` -Name "AWS-JoinDirectoryServiceDomain"

View more information about parameters (檢視參數的詳細資訊)

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 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 日誌。當您第一次啟用記錄時,Systems Manager 會傳送在您開始上傳應用程式、系統、安全性和 ETW 日誌的日誌之一 (1) 分鐘內產生的所有日誌。在這個時間範圍內產生的日誌,則未包含在內。如果關閉記錄,之後再重新開啟記錄,則 Systems Manager 會從上次上次關閉的時間開始傳送記錄。如果是任何自訂的日誌檔案和 Internet Information Services (IIS) 日誌,Systems Manager 會從頭開始讀取日誌檔案。此外,Systems Manager 也可以將效能計數器資料傳送至 CloudWatch 記錄檔。

如果您先前在 EC2Config 中開啟 CloudWatch 整合,Systems Manager 設定會覆寫儲存在檔案中受管理節點上本機的任何設定。C:\Program Files\Amazon\EC2ConfigService\Settings\AWS.EC2.Windows.CloudWatch.json如需使用 EC2Config 在單一受管節點上管理效能計數器和日誌的詳細資訊,請參閱 Amazon 使用 CloudWatch 者指南中的使用 CloudWatch 代理程式從 Amazon EC2 執行個體和現場部署伺服器收集指標和日誌。

View the description and available parameters (查看描述和可用參數)

Get-SSMDocumentDescription ` -Name "AWS-ConfigureCloudWatch"

View more information about parameters (檢視參數的詳細資訊)

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

將效能計數器傳送至 CloudWatch 使用AWS-ConfigureCloudWatch文件

下列示範指令會將效能計數器上傳至 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 服務更新到最新版本或您指定的版本。

View the description and available parameters (查看描述和可用參數)

Get-SSMDocumentDescription ` -Name "AWS-UpdateEC2Config"

View more information about parameters (檢視參數的詳細資訊)

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 更新。如果更新需要重新啟動,受管節點會在已安裝更新後 15 分鐘自動重新啟動。您也可以透過此命令,將 Windows 更新設定為檢查更新,但不加以安裝。AWS-ConfigureWindowsUpdate 文件與 Windows Server 2008、2008 R2、2012、2012 R2 和 2016 相容。

View the description and available parameters (查看描述和可用參數)

Get-SSMDocumentDescription ` –Name "AWS-ConfigureWindowsUpdate"

View more information about parameters (檢視參數的詳細資訊)

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

開啟 Windows 自動更新

以下命令會將 Windows Update 設定為每日下午 10:00 自動下載並安裝更新。

$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 更新通知層級,讓系統檢查更新,但不會自動更新受管節點。

$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 更新

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