У меня есть сценарий, в котором я пытаюсь поместить свои учетные данные AWS на удаленный сервер с помощью сценария powershell.
Проблема, с которой я столкнулся: начальные нули идентификатора учетной записи AWS (один из аргументов сценария powershell) не сохраняются. Я новичок в скрипте PS. Требуется руководство по сохранению нулей идентификатора учетной записи.
Пример — AccountID — 000009876543 — Здесь ведущие нули не сохраняются, и на сервере создается запись без нулей. Однако 900000876543 успешно передан.
Скрипт -
$user = $args[7] #userid
$pass = $args[8] #password
$pair = "$($user):$($pass)" #pair
$bytes = [System.Text.Encoding]::ASCII.GetBytes($pair)
$base64 = [System.Convert]::ToBase64String($bytes)
$basicAuthValue = "Basic $base64"
$headers = @{ Authorization = $basicAuthValue }
$c1=$args[0]
$path=$args[1]
$cert=$args[2]
$p1=$args[3]
$awsacct=$args[4] #account_id
$awsak=$args[5] #access_key
$awssk=$args[6] #secret_key
$body9="{`"project`": { `"href`": `"/tenants/$c1/projects/$p1`"},`"account`": {`"href`": `"/tenants/$c1/accounts/$awsacct`"},`"credential`":{ `"type`": `"key`",`"accessKey`": `""+$awsak+"`", `"secretKey`": `""+$awssk+"`"}}"
$r=Invoke-WebRequest -uri "$path/tenants/$c1/credentials/$awsak" -Headers $headers -Certificate $cert -ContentType application/json -Method PUT -Body $body9
$r.Content
$args
, вместо этого определите именованные параметры и определите$awsacct
как строку:Param( $c1, $path, $cert, $p1, [String]$awsacct, $awsak, $awssk )
- person iRon   schedule 26.12.2019Param
, но вы также можете рассмотреть возможность сериализации параметров, см.: stackoverflow.com/q/ 34076478/1701026 - person iRon   schedule 26.12.2019$user = [string]$args[7]
или$user = "$($args[7])"
или$user = $args[7] -as [string]
… - person JosefZ   schedule 26.12.2019$awsacct = "$args[4]".PadLeft(12,"0")
или$awsacct = '{0:000000000000}' -f $args[4]
. - person Theo   schedule 26.12.2019