【问题标题】:TypeScript - pass hash table as an argument to PowerShell scriptTypeScript - 将哈希表作为参数传递给 PowerShell 脚本
【发布时间】:2020-07-09 23:54:26
【问题描述】:

在打字稿中,我试图将哈希表作为参数传递给我正在调用的 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}`

提前感谢您的帮助!

【问题讨论】:

  • 这行不通。 params 将被转换为字符串。我建议你重新评估你的整个方法

标签: javascript typescript hashtable


【解决方案1】:

我认为您需要将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)}`

【讨论】:

  • 感谢您的帮助!如果我想在地图中添加布尔类型,最好只执行 let 命令:string = & ${pathToScriptPSString(script)} ${toPowerShellParams(params)} -Check $true
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-18
  • 2013-10-15
  • 2012-10-07
  • 2011-08-01
相关资源
最近更新 更多