TypeScript - передать таблицу ha sh в качестве аргумента скрипту PowerShell - PullRequest
0 голосов
/ 10 июля 2020

В машинописном тексте я пытаюсь передать таблицу ha sh в качестве аргумента вызываемого мной сценария PowerShell.

Вот мой машинописный текст

let params = new Map();
params.set('Project', 'Testproject')
params.set('Username', 'John')
params.set('Password', 'Doe')

let script: string = path.join(__dirname, 'Test.ps1');
let command: string = `& ${pathToScriptPSString(script)} ${params}`

Test.ps1 скрипт имеет 3 параметра: проект, имя пользователя и пароль.

В PowerShell я бы поступил так.

$paramsPassed = @{
    Test = "hello";
    Boolean = $true;
}


function test {

param(
    [parameter()]
    [string] $Test,
    [parameter()]
    [boolean] $Boolean
)

    Write-Host $Test
    Write-Host $Boolean
}


Test @paramsPassed

В машинописном тексте я пробовал их, но не работал.

let command: string = `& ${pathToScriptPSString(script)} ${params}`

let command: string = `& ${pathToScriptPSString(script)} @{params}`

Заранее благодарим за помощь!

1 Ответ

1 голос
/ 10 июля 2020

Думаю, вам нужно преобразовать params в строку параметров для PowerShell, как показано ниже.

let params = new Map();
params.set('Project', 'Testproject')
params.set('Username', 'John')
params.set('Password', 'Doe')

function toPowerShellParams(params) {
   let paramsString = ''
   params.forEach((key, value) => paramString += `-${key} ${value} `)
   return paramString
}

let script: string = path.join(__dirname, 'Test.ps1');
let command: string = `& ${pathToScriptPSString(script)} ${toPowerShellParams(params)}`
...