Скрипт PowerShell с входными параметрами с пакером (.json) - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть этот сценарий Ps1,

param   ([string] $userpassword, [string] $UserName)

Write-host "Start.." (Get-date)

Write-host "User Name is "$UserName Write-host "User password is
"$userpassword

if ($userpassword.length -lt 0) {
    Write-host "Please enter password!"$UserName }

Write-host "End.." (Get-date)

упаковщик (.json) следующим образом:

"provisioners":    [
    {
      "type": "powershell",
      "environment_vars": 
      [
        "userpassword=********",
        "UserName=ABC"
      ],      
      "scripts": 
      [
        "test.ps1"
      ]
    } ]

.Ps1 не может прочитать входные параметры из упаковщика (.json) ...

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Хотя вопрос не очень ясен, я предполагаю из заголовка, что вы хотите запускать скрипт PowerShell в пакере, передавая ему параметры.

Пакер поддерживает это, но только для встроенных скриптов.Неважно, является ли параметр переменной среды или прямой записью.главное, чтобы скрипт запускался со сборочной машины.

Это двухэтапный процесс.

  1. Скопируйте файл на машину.
  2. Запустите файл встроенных параметров передачи.

Например

"provisioners": [
     {
      "type": "file",
      "source": "c:\myscripts\MyPowerShellScript.ps1",
      "destination": "c:\temp\MyPowerShellScript.ps1",
      "direction": "upload"
     },
     {
      "type": "shell",
      "inline": [
         "c:\temp\MyPowerShellScript.ps1 Param1 {{user `Param2_from_an_env_var`}}"
       ]
      },
0 голосов
/ 23 ноября 2018

В отличие от сценария оболочки Unix, переменные (и параметры) Powershell не являются переменными среды.

Синтаксис в Powershell для чтения переменной среды: $env:variablename.


Вы можете установить значения параметров по умолчанию равными env var:

param(
    [string] $userpassword = $env:userpassword,
    [string] $UserName = $env:username
)

Write-host "Start.." (Get-date)
[...]

Или очистить блок параметров и просто присвоить переменные напрямую:

[string] $userpassword = $env:userpassword
[string] $UserName = $env:username

Write-host "Start.." (Get-date)
[...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...