如何获取多台计算机的版本信息? -Powershell

时间:2016-06-23 15:36:27

标签: sql-server powershell-v3.0

我正在尝试编写一个脚本,通过浏览由新文件分隔的服务器名称的文本文件来确定服务器是否正在运行MSSQLSERVERMSSQL$*(某些SQL Server实例)线。该代码适用于第一台服务器并输出正确的版本和引擎版本,但对于所有其他服务器,它只会告诉我它们是否运行SQL Server,而不是输出版本和引擎版本。我做错了什么?

提前感谢您提供的任何帮助!

Clear-Host

$Name1 = "MSSQLSERVER"
$Name2 = "MSSQL$*"

$computers = Get-Content "E:\computers.txt"

$saveAs = 'E:\SQL_Report.txt'

foreach ($computer in $computers) {
    try{
        $Service1 = Invoke-Command -ComputerName $computer {Get-Service MSSQLSERVER}
        $Service2 = Invoke-Command -ComputerName $computer {Get-Service MSSQL$*}

        if($Service1 -Match $Name1 -Or $Service2 -Match $Name2){

            "$computer Running MSSQL"
            [reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | out-null
            $srv = New-Object "Microsoft.SqlServer.Management.Smo.Server" "$computer"
            $srv.Version
            $srv.EngineEdition 
        }
        else{
            "$computer Not running MSSQL"
        }
    }
    catch{
        "$computer, Not Accessable, $_"
        continue
    }
}

以下是当前输出的示例:

Database_name1运行SQL Server

主要次要构建修订

10 50 6220 -1
EnterpriseOrDeveloper Database_name2未运行SQL Server 找不到任何具有服务名称的服务' MSSQLSERVER'。     + CategoryInfo:ObjectNotFound:(MSSQLSERVER:String)[Get-Service],ServiceCommandException     + FullyQualifiedErrorId:NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand

Database_name3运行SQL Server 找不到任何具有服务名称的服务' MSSQLSERVER'。     + CategoryInfo:ObjectNotFound:(MSSQLSERVER:String)[Get-Service],ServiceCommandException     + FullyQualifiedErrorId:NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand

0 个答案:

没有答案