Powershell czytane rejestru dla SQL

16-kwi-2014

(Zajrzyj też do wpisu Rejestr dla SQL)

Rejestr możesz przeglądać edytować używając standardowych komend Set-Location, New-Item, Set-ItemProperty, ale komendy te mają jedną wadę. Pracują lokalnie. Jeżeli masz zamiar pracować z rejestrem zdalnym lepiej będzie posłużyć się obiektem .NET pozwalającym na takie rzeczy. Zaczynamy od zadeklarowania zmiennych (w moim przypadku poszukam numeru portu na którym pracuje instancja SQL SQLEXPRESS):

$computer=’server001’
$instance=’SQLEXPRESS’
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey(’LocalMachine’, $computer)

W ten sposób obiekt $reg pozwala pracować z gałęzią Local_Machine na komputerze server001. Teraz poszukamy wartośi klucza:

$key=’SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL’
$subKey= $reg.OpenSubKey($key)

Ten klucz zawiera informacje o tym jakie instancje są zainstalowane na serwerze oraz jakie podklucze w HKLM\Software\Microsoft\Microsoft SQL Server odpowiadają za te instancje.

sql_registry

Poniższe polecenie wyciąga z klucza 'SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL’ wartość właściwości o nazwie SQLEXPRESS, bo

-$subKey wskazuje obecnie na SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL

-$instance = SQLEXPRESS

$instanceRegistryKey=$subKey.GetValue($instance)

W ten sposób w $instanceRegistryKey masz wartość „MSSQL11.SQLEXPRESS”. Dzięki niej możesz odnaleźć właściwe miejsce w rejestrze do odczytania konfiguracji interesującej cię instancji.

Aby zbadać na jakim porcie działa wybrana instancja szukajmy dalej:

$key=”SOFTWARE\Microsoft\Microsoft SQL Server\$instanceRegistryKey\MSSQLSERVER\SUPERSOCKETNETLIB\TCP\IPALL”
$subKey=$reg.OpenSubKey($key)

Teraz $subKey wskazuje na klucz SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQLSERVER\SUPERSOCKETNETLIB\TCP\IPALL

Aby odczytać numer portu wystarczy wykonać ostatnie polecenie:

$port=$subKey.GetValue(„TcpPort”)

 

Komentarze:

  1. Mobilo » Blog Archive » Rejestr dla SQL napisał,

    […] Aby edytować rejestr z poziomu powershell zajrzyj: Powershell czytane rejestru dla SQL […]

Autor: Rafał Kraik