具有多个潜在凭证的PowerShell Connect-VIServer。

问题描述 投票:-3回答:1

我在一个数据中心工作,目前正在创建一个可以连接多个esx主机的脚本。 不幸的是,用户名和密码大部分是相同的,但其中一些是不同的。 我想检查连接是否失败,然后用另一组凭证重试。 在我让主机被列为不可访问之前,我需要尝试三到四组不同的证书。

目前,我的脚本使用最常见的凭证成功连接,没有任何问题。 现在,我想升级脚本,以便能够测试所有可能的凭证,如果它的主要凭证失败。

在我寻找解决方案的过程中,我遇到了trycatch,但是我想,如果有三到四层可能的重复命令,那将会变得非常糟糕。

所以,这是我目前有一个trycatch的想法去。


$goodhost | ForEach-Object { 
    try {  
        $sessions = @(Connect-VIServer -Server $_ -User 'user' -Password $psw - 
        ErrorAction SilentlyContinue) 
    } 
    catch { 
        if ($Error[0] -ccontains "incorrect user name") { 
            $sessions = @(Connect-VIServer -Server $_ -User 'user1' -Password $psw1 
            -ErrorAction SilentlyContinue) 
        } 
     } 
}

我目前的想法是,如果要对三个不同的用户名密码对进行尝试性捕获 基本上需要我做3次嵌套的重复操作。 换句话说,就是下面的事情。

connect using main credential
if fail
  Connect using second credential
  if fail
     connect using third credential
     if fail
        connect using fourth credential

我想我的问题是,这是解决这个问题的最好方法吗?

powershell powercli
1个回答
0
投票

@Jawad提供了我正在寻找的见解。 虽然字典在这种情况下无法工作,但我觉得他的建议足够接近,我觉得他的建议引导我找到了解决方案。 一旦我写完新的代码,我会编辑这个。

© www.soinside.com 2019 - 2024. All rights reserved.