首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这段代码效率高吗?

这段代码效率高吗?
EN

Stack Overflow用户
提问于 2018-06-07 11:06:01
回答 1查看 48关注 0票数 0

我有一个脚本来测试服务器是否启动,我有的脚本工作得很好,我只是想知道它是否可以优化得更多,或者只是它的方式很棒?它查找所有以某个前缀开头的服务器,在本例中是'PreSvr*‘,如果它发现其中一个服务器启动并运行,它会停止处理其余的服务器,并告诉我它找到的第一个服务器的名称。如果它发现这些服务器都没有响应,它会告诉我。

代码语言:javascript
复制
$found = $null
$status = $false
$SvrName = "PreSvr*"
$GetSvrs = (Get-ADComputer -Filter {Name -like $SvrName}).Name
foreach ($Svr in $GetSvrs)
{
    try {$Status = (Get-Service -ComputerName $Svr -Name WinRM -ErrorAction SilentlyContinue).Status} catch {$Status = $false}
    IF ($Status) {$Found = $Svr;break}
}

IF ($Found) {$Svr} Else {"No Server Responded"}
EN

回答 1

Stack Overflow用户

发布于 2018-06-07 14:42:14

您正在尝试获取WinRM服务状态的状态,如果这是目的的话-下面的代码应该可以工作。你可以在try代码块内部中断。

代码语言:javascript
复制
$found = $null
$winRMServiceStatus = $null
$serverReachable = $false
$srvName = "*"
$getSvrs = (Get-ADComputer -Filter {Name -like $srvName}).Name
foreach ($svr in $getSvrs) {
    try {
        $winRMServiceStatus= (Get-Service -ComputerName $svr -Name WinRM -ErrorAction SilentlyContinue).Status
        $serverReachable = $true
        $found = $svr
        break;
    }
    catch {
        $serverReachable = $false
    }
}

if($serverReachable) {"found $found with WinRM status $winRMServiceStatus"} else{"No server responded"}

在您的示例中,您尝试在foreach循环之外访问$srv,但它不可用。

我可以在我的实验室快速测试它,让我知道它是如何为你工作的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50732365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档