2016-10-19 1 views
0

엄밀히 말하면 문제는이 솔루션을 사용하고 작동하지만 더 좋은 방법이 있습니까?Powershell : ser 서버 당 모든 SQL Server 인스턴스를 찾으십니까?

다음주의 사항이 있습니다.

1) SQL 인스턴스에 대한 네트워크 전체 검색을 수행하고 싶지 않습니다. 알려진 SQL 서버를 조사 중이지만 각각에 인스턴스 이름을 부여하고 싶습니다.

2) 코드는 Microsoft에서 SQL Server 서비스의 표시 이름을 절대로 변경하지 않는다고 가정합니다.

function getSQLInstance ([string]$SERVER) { 
    $services = Get-Service -Computer $SERVER 
    # Filter for SQL services 
    $services = $services | ? DisplayName -like "SQL Server (*)" 
    # Remove MSSQL$ qualifier to get instance name 
    try { 
     $instances = $services.Name | ForEach-Object {($_).Replace("MSSQL`$","")} 
    }catch{ 
     # Error if none found 
     return -1 
    } 
    return $instances 
} 

getSQLInstance "YOUR_SERVER" 

답변

0

보다는 다시 발명 SQL Power Doc는 서버 인스턴스를 발견하는 방법을 살펴보고, 바퀴를. NetworkScan.psm1보고에서, 당신의 접근 방식과 매우 유사하게 나타납니다 어떤 :

$ManagedComputer.Services | ForEach-Object { 

       if (($_.Name).IndexOf('$') -gt 0) { 
        $InstanceName = ($_.Name).Substring(($_.Name).IndexOf('$') + 1) 
        $IsNamedInstance = $true 
        $ManagedComputerServerInstanceName = $InstanceName 
       } else { 
        $InstanceName = $null 
        $IsNamedInstance = $false 
        $ManagedComputerServerInstanceName = $_.Name 
       } 

을 또는 다만 인스턴스에 대한이와 더 많은 데이터를 수집하기 위해 SQL 전원 문서를 사용하고 특정 서버 이름에 그것을 가리 킵니다.

관련 문제