演练:使用Amazon适用于 Windows PowerShell 的 PowerShell 工具 - Amazon Web Services Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

演练:使用Amazon适用于 Windows PowerShell 的 PowerShell 工具

以下示例演示如何使用AmazonWindows PowerShell 用于查看有关命令和命令参数的信息、如何运行命令以及如何查看这些命令的状态的工具。本演练为每个预定义的 Amazon Web Services Systems Manager 文档包含了一个示例。

重要

仅允许受信任的管理员使用本主题中所示的 Systems Manager 预配置的文档。在 Systems Manager 文档中指定的命令和脚本需要管理权限才能在您的实例上运行。如果用户有权运行任何预定义的 Systems Manager 文档(任何以Amazon),则该用户也具有对实例的管理员访问权限。对于所有其他用户,您应创建限制性文档并与特定用户共享这些文档。有关限制对Amazon Web Services Systems ManagerRun Command,请参阅为创建非管 Systems Manager 员 IAM 用户和组

配置Amazon适用于 Windows PowerShell 会话设置的工具

指定您的凭证

打开适用于 Windows PowerShell 的 工具并运行以下命令来指定凭证。您必须具有要配置的实例的管理员权限或必须已获得 AWS Identity and Access Management (IAM) 中的适当权限。有关更多信息,请参阅 Systems Manager 的先决条件

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

设置默认Amazon Web Services 区域

运行以下命令为 PowerShell 会话设置区域。该示例使用美国东部(俄亥俄)区域 (us-east-2)。Run Command 当前位于Amazon Web Services 区域列出在Systems Manager Services 终端节点中的Amazon Web Services 通用参考

Set-DefaultAWSRegion ` -Region us-east-2

列出所有可用文档

此命令将列出您的账户可用的所有文档。

Get-SSMDocumentList

运行 PowerShell 命令或脚本

使用 Run Command 和AWS-RunPowerShell文档,您可使用远程桌面在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上运行任何命令或脚本,就像您已登录到该实例一样。您可以发出命令或键入本地脚本的路径以运行命令。

注意

有关在使用 Run Command 调用脚本时重启服务器和实例的信息,请参阅通过脚本重启托管实例

查看说明和可用参数

Get-SSMDocumentDescription ` -Name "AWS-RunPowerShellScript"

查看有关参数的更多信息

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

此示例中命令的状态可以是 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

使用安装 PowerShell 模块AWS-InstallPowerShellModuleJSON 文档

您可以使用 Run Command 在 Amazon EC2 实例上安装 PowerShell 模块。有关 PowerShell 模块的更多信息,请参阅 Windows PowerShell 模块

查看说明和可用参数

Get-SSMDocumentDescription ` -Name "AWS-InstallPowerShellModule"

查看有关参数的更多信息

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

安装 PowerShell 模块

以下命令下载 EZOut.zip 文件,安装该文件,然后运行另一个命令来安装 XPS Viewer。最后,此命令的输出将上传到一个名为“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-JoinDirectoryServiceDomainJSON 文档

使用 Run Command,您可以将实例快速加入Amazon Directory Service域。执行此命令前,您必须创建目录。我们还建议您了解Amazon Directory Service。有关更多信息,请参阅什么是 Amazon Directory Service?

目前,您只能将一个示例加入域。无法从域中删除实例。

注意

有关在使用 Run Command 调用脚本时重启服务器和实例的信息,请参阅通过脚本重启托管实例

查看说明和可用参数

Get-SSMDocumentDescription ` -Name "AWS-JoinDirectoryServiceDomain"

查看有关参数的更多信息

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

将实例加入域

以下命令将实例加入给定的 Amazon 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

使用将 Windows 指标发送到 Amazon CloudWatch LogsAWS-ConfigureCloudWatch文档

您可以将应用程序、系统、安全和 Windows 事件跟踪 (ETW) 日志中的 Windows Server 消息发送到 Amazon CloudWatch 日志。在首次启用日志记录时,Systems Manager 会发送从您开始上传该应用程序、系统、安全和 ETW 日志时起一 (1) 分钟内生成的所有日志。其中不包括在此时间之前产生的日志。如果您禁用日志记录并在以后再次启用日志记录,Systems Manager 会从其中断的时间开始发送日志。对于任何自定义日志文件和 Internet Information Service (IIS) 日志,Systems Manager 将从头读取日志文件。此外,Systems Manager 还可以将性能计数器数据发送到 CloudWatch Logs。

如果先前在 EC2Config 中启用了 CloudWatchings 集成,那么 Systems Manager 设置会覆盖实例本地在C:\Program Files\Amazon\EC2ConfigService\Settings\AWS.EC2.Windows.CloudWatch.json文件。有关使用 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

使用将性能计数器发送到 CloudWatchAWS-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"]}}}'}

使用更新 EC2ConfigAWS-UpdateEC2Config文档

使用 Run Command 和AWS-EC2ConfigUpdate文档,您可以更新正在Windows Server实例。此命令可将 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'}

使用启用或禁用 Windows 自动更新AWS-ConfigureWindowsUpdate文档

使用 Run Command 和AWS-ConfigureWindowsUpdate文档,您可以在Windows Server实例。此命令将 Windows Update Agent 配置为在您指定的日期和时间下载和安装 Windows 更新。如果更新需要重启,计算机将在安装更新 15 分钟后自动重启。使用此命令,您还可以将 Windows Update 配置为检查更新但不安装更新。这些区域有:AWS-ConfigureWindowsUpdate文档与 Windows Server 2008、2008 R2、2012、2012、2012 R2 和 2016 兼容。

查看说明和可用参数

Get-SSMDocumentDescription ` –Name "AWS-ConfigureWindowsUpdate"

查看有关参数的更多信息

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 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文档中,您可以管理 Elastic Compute Cloud (Amazon EC2) 实例的更新,以及Windows Server。此命令在 Amazon EC2 实例上扫描或安装缺少的更新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'}