Register-SSMTaskWithMaintenanceWindow Командлет для AWS - PullRequest
1 голос
/ 09 мая 2019

У меня есть следующие CMD. $ newtarget - это новое окно обслуживания, определенное ранее.

$newtask = Register-SSMTaskWithMaintenanceWindow -Windowid $newmw -ServiceRoleArn "arn:aws:iam::xxxxxx" -MaxConcurrency 1 -MaxError 1 -TaskArn "AWS-RunPowerShellScript" -Target @{ Key="WindowTargetIds";Values="$newtarget"} -TaskType "RUN_COMMAND" -Priority 10

Как я могу поместить код Powershell внутрь, который я хочу зарегистрировать в этом задании? У кого-нибудь есть идея? Я просмотрел API, но не знаю как. Не имеет значения, загружаю ли я ps1 и выполняю ли он (путь внутри задачи) или весь код целиком.

Я думал о чем-то вроде:

$parameters = @{}
$parameterValues = New-Object Amazon.SimpleSystemsManagement.Model.MaintenanceWindowTaskParameterValueExpression
$parameterValues.Values = <the PS Code in some way>
parameters.Add("Commands", $parameterValues)

Спасибо за любую помощь.

1 Ответ

1 голос
/ 09 мая 2019

Я вижу еще несколько параметров в команде, в отличие от того, что есть в документации команды, например: TaskInvocationParameters_RunCommand_Parameters

Проверьте ниже в примере, вам потребуется создать $ параметры и назначить TaskInvocationParameters_RunCommand_Parameters - врегистр типа RUN_COMMAND.Существуют аналогичные параметры, доступные для других типов (Automation, Lambda ..)

#create command parameters
$parameters = [System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.String]]]::new()
$parameters.Add("commands",@("ipconfig","dir env:\computername"))
$parameters.Add("executionTimeout",@(3600))

Register-SSMTaskWithMaintenanceWindow 
    -WindowId $mw 
    -ServiceRoleArn $myIAMRole
    -MaxConcurrency 1 
    -MaxError 1 
    -TaskType RUN_COMMAND 
    -TaskArn "AWS-RunPowerShellScript" 
    -Target @{Key="WindowTargetIds";Values=$targetTo} 
    -Priority 10 
    -TaskInvocationParameters_RunCommand_Parameters $parameters 
    -Name "new-world"
...