gpt4 book ai didi

Powershell:不同环境的两个参数定义?

转载 作者:行者123 更新时间:2023-12-02 23:00:07 25 4
gpt4 key购买 nike

我有一个又长又大的 PS5 powershell 脚本,其中有几个参数,在脚本文件开头的 param() 部分中定义。这些参数是字符串和哈希表,包括主机名、IP 地址、域等。

此脚本在我的环境中运行得非常好,但现在它也应该在所有参数都不同的第二个环境中运行。

因此,在不更改所有脚本命令的情况下,我想定义具有不同值的第二个参数部分,并在脚本顶部提供一个“switch”变量,例如:

param1(
... my params1 ...)

param2(
... my params2 ... )

string configToUse = "param1"

我偶然发现了 powershell 参数集,但我想这不是我想要的。我过去还使用了一些节点定义文件(.psd1),但我想将所有内容保留在一个文件中,该文件只需双击即可执行,而无需在命令行上传递 -param1 或 -param2。

有人可以指出我正确的方向吗?

谢谢!

最佳答案

param 语句仅用于按照您提到的方式使用 -param "value" 语法将参数传递给脚本,我会强烈建议以这种方式将参数传递给脚本,而不是将静态值放入脚本中!它更干净、更健壮、更透明、更易于维护、更便携且更容易记录。

如果您仍然需要双击功能,可能是为了方便起见,您可以例如创建一个调用脚本的批处理文件。它只是一行(@ 阻止该行被打印到控制台):

@powershell -File "your-script.ps1" -Param1 "value 1"

然后,您可以为每个环境创建单独的批处理文件。

call-mysript-env-1.bat
call-mysript-env-2.bat

或者,您可以使用快捷方式来完成相同的任务,以相同的方式使用参数调用脚本。

如果,无论出于何种原因,您确实不想这样做,您可以完全省略 param 语句(您没有使用无论如何,它的功能)。毕竟参数基本上只是常规变量。你可以这样做:

### start of parameters ###
$configToUse = "param1"

switch ($configToUse) {
"param1" {
$MyParam = "value 1"
}
"param2" {
$MyParam = "value 2"
}
}
#### end of parameters ###
# rest of your script ....

关于Powershell:不同环境的两个参数定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64424943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com