1

我唯一的目标是针对捆绑服务器验证用户帐户。我正在使用下面的命令来做到这一点。

$creds2= Get-Credential
$servers = Get-Content ('C:\Users\vishnuvardhan.chapal\Documents\Widnows Servers success in 139 and 445.txt')
$servers | ForEach-Object {Get-WmiObject Win32_ComputerSystem -ComputerName $_ -Credential $creds2} | Out-GridView

在这里,我遇到了两个问题。

1) 在网格视图中,我只是获取主机名但没有 FQDN,如下面的屏幕截图所示。

输出的屏幕截图

2)上面的屏幕仅适用于成功的服务器和失败的服务器(对于身份验证失败的服务器)我在 Powershell 窗口中得到输出,如下面的屏幕。

在此处输入图像描述

现在,我的目标是将两个输出组合在一个地方。是否可以?如果是,该怎么做?请给它一些启示。

除了上面还有什么方法可以更轻松地测试它,我的意思是直接命令来测试针对远程服务器的用户身份验证?

仅供参考……我本练习的唯一目标是验证用户身份验证,而不是从远程计算机获取一些详细信息。

4

1 回答 1

0

Out-GridView不是处理这些事情的好方法。建议将其转换为 JSON 或某种格式,然后将其解析为文件或您希望的任何格式。有多种检查方法,但错误处理将解决您的问题:

try
{
    $creds2= Get-Credential
    $servers = Get-Content ('C:\Users\vishnuvardhan.chapal\Documents\Widnows Servers success in 139 and 445.txt')
    $servers 

    foreach($server in $servers)
    {
        try
        {
        Get-WmiObject Win32_ComputerSystem -ComputerName $Server -Credential $creds2
        }
        catch
        {
        "Error in accessing the server - $Server with the given credential. Kindly validate."
        }
    }
}
catch
{
$_.Exception.Message
}

因此,在循环中,我还添加了一个 try catch,因为如果一个服务器出现故障,它将继续处理列表中的下一个服务器,并将捕获带有服务器名称的错误以及消息。

希望能帮助到你。

于 2019-02-14T09:17:27.757 回答