当前位置: 首页 > 知识库问答 >
问题:

PowerShell:如何在循环中增量放大变量?

艾弘义
2023-03-14

我是一个脚本/PowerShell/PowerCLI新手。我的任务是找出如何最好地完成扩展我们现有的一些脚本。

我们的脚本从最终用户那里获取YAML输入,并按照他们的规范构建VMware ESXi集群。我们试图扩展脚本,以便根据用户在YAML中指定的集群类型应用不同的配置。我们希望最终用户能够扩展它,以创建所需的尽可能多的集群。同时根据它们输入的集群类型应用不同的配置。我们还希望能够在将来为我们最终定义的其他类型轻松地扩展集群“X”类型。

Cluster1: <Name>
Cluster1Type: <Basic, DR, or Replicate>
Cluster2: <Name>
Cluster2Type: <Basic, DR, or Replicate>

我知道我可以用硬编码一个很长的if和语句的相当不干净的方式来实现这一点。类似于:

If ($Cluster1Type -eq 'DR') {<Code to execute on $Cluster1>}
ElseIf ($Cluster1Type -eq 'Replicate') {<Code to execute on $Cluster1>}
Else {<Code to execute on $Cluster1>}

If ($Cluster2Type -eq 'DR') {<Code to execute on $Cluster2>}
ElseIf ($Cluster2Type -eq 'Replicate') {<Code to execute on $Cluster2>}
Else {<Code to execute on $Cluster2>}

我知道一定有更好的办法。如果我没记错的话,VSphere6.5每个vCenter最多可以有64个集群,当然,我不想每次我们需要检查最终用户分配给特定集群名的集群类型时都硬编码64个if else语句。我一直在寻找一个干净的解决方案,但我的经验不足使我自己找到一个答案很有挑战性。

我还在想,也许可以为集群名称使用一个变量数组,然后提示执行PowerShell脚本的用户为他们输入到数组中的每个集群名称输入集群类型。我还是觉得可能还有比这更好的方法?可能是在增量方法中对每个ClusterX和ClusterXType变量运行循环的方法吗?

共有1个答案

慕容铭
2023-03-14

你说的是这样的话吗?这是假设用户一次只允许输入一种集群类型。

# Specify the number of cluster nodes to create
$ClusterCount = Read-Host -Prompt 'Enter the number of guests to create'

# Enter a cluster type to create
$ClusterType = Read-Host -Prompt 'Enter the type - Basic, DR, Replicate'

1..$ClusterCount | 
ForEach{
    "Working cluster type $ClusterType on new node name Cluster$PSITEM"
    <#
    If ($ClusterType -eq 'DR') {"Code to execute on Cluster$PSItem"}
    ElseIf ($ClusterType -eq 'Replicate') {"Code to execute on Cluster$PSItem"}
    Else {<Code to execute on $Cluster1>}
    #>
}

# Results

Enter the number of guests to create: 3
Enter the type - Basic, DR, Replicate: Basic
Working cluster type Basic on new node name Cluster1
Working cluster type Basic on new node name Cluster2
Working cluster type Basic on new node name Cluster3
 类似资料:
  • 问题内容: 我想做类似的事情: 变量p来自test.py,它是一个列表[‘a’,’b’,’c’,’d’] 结果输出是: 1 2 3 4 问题答案: 您可以使用: 检查模板设计器文档。 在最近的版本中,由于作用域规则,下面的 不 工作:

  • 如下所示,我要反转数组。但我的代码不管用。这是我的for循环。请看一下。这个for循环正确吗。代码如下。

  • 我正在powershell中编写一个小脚本,希望以特定格式构建一个变量。 当我打印该值时,该值显示为- 我希望输出是- 在这种情况下,如何将变量值放在“”(双引号)内。

  • 问题内容: 我在本地计算机上使用WAMP,提交具有2000个输入字段的FORM(method =“ POST”)时,我只能读取1001 _POST变量。即使用Netbeans调试器,如果表单中有多个1001输入字段,我可以清楚地看到_POST大小始终为1001。 我使用此http://ideone.com/GAw14 Java代码生成具有N个输入字段的表单并进行了测试。 在另一台机器(WAMP)上

  • 问题内容: 我正在做一些有关Java的研究,发现这很令人困惑: 这是永无止境的循环! 有人很好地解释了为什么会发生这种事情吗? 问题答案: 上面的循环与以下内容基本相同:- 3 次你的一部分声明- ,被评估为: - 您需要从此处删除分配,以使其起作用:- (根据评论的OP请求) 的行为:- 就注释中指定的问题而言,以下表达式的结果:- 获得如下:- 让我们标记第二条语句的不同部分:- 现在,首先将

  • 本文向大家介绍Windows Powershell 环境变量,包括了Windows Powershell 环境变量的使用技巧和注意事项,需要的朋友参考一下 传统的控制台一般没有象Powershell这么高级的变量系统。它们都是依赖于机器本身的环境变量,进行操作 。环境变量对于powershell显得很重要,因为它涵盖了许多操作系统的细节信息。此外,powershell中的变量只存在于powersh