【发布时间】:2019-05-17 08:43:42
【问题描述】:
假设我有 script1.ps1,它从 Vault 获取 REST 响应,其中包含 Dev, Test, and Prod 环境的一堆键/值。
在script1 中,我有一个参数来传递可选环境。
param(
[String]$environment
)
如果没有环境作为参数在命令行传递,其值默认设置为dev
确保 script1 正在获取值,我测试了以下内容(来自我的开发服务器/环境)
PS> script1.ps1
从 Vault 中返回给我的开发键/值...好
PS> script1.ps1 test
从保险库返回给我的 TEST 键/值......很好,所以脚本工作得很好
现在考虑script2.ps1,我在其中调用script1.ps1 来更改开发环境中的一些连接。
这是script2:
$response = & ".\script1.ps1" | ConvertFrom-Json
$response[1]
并运行 script2...
PS> script2.ps1
返回给我来自保险库的开发键/值,因为记住 script1 默认设置 $environment 为 dev 如果没有传递任何参数...好
但是,当我现在尝试这个时:
$response = & ".\script1.ps1 test" | ConvertFrom-Json
$response[1]
我没有得到任何回报!
这是为什么呢??
这有什么问题吗? & ".\script1.ps1 test"
【问题讨论】:
-
$env是一个保留名称。除了预期的功能之外,您永远不应该将它用于任何其他用途 - 作为环境“驱动”诸如$env:temp之类的东西。 -
@Lee_Dailey 我应该注意我在这里使用了 $env SO,但在脚本中我将它作为 $environment。我会修改我的帖子
-
啊! [grin] 很高兴知道...没有其他事情对我来说很突出,所以我会继续潜伏。
-
我只看了 ss64 和
&"call" 运算符。它说 >>>Syntax - & "[path] command" [arguments]咧嘴] -
@Lee_Dailey OMG 就是这样!!!!!!哈哈,你太棒了! [咧嘴]
标签: powershell