#1. Загружаем SMO
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo ") | Out-Null
#2. Подключаемся к серверу 1 (Windows аутентификация):
#Сервер1-локальный
#Если нужен другой сервер, введите вместо точки IP-адрес \ имя сервера
$smoserver1 =new-object("Microsoft.SqlServer.Management.Smo.Server") "."
#3. Подключаемся к Серверу 2 (аутентификация SQL Server):
#В следующей строке нужно вписать IP-адрес сервера 2 либо имя сервера
$smoserver2 =new-object("Microsoft.SqlServer.Management.Smo.Server") "IP - адрес \ имя сервера2"
#Если аутентификация SQL Server, то значение FALSE, если Windows(по умолчанию) - TRUE
$smoServer2.ConnectionContext.set_LoginSecure($FALSE)
#Запрос ввода имени пользователя и пароля
$LoginCredentials = Get-Credential
#Устанавливаем свойства ConnectionContext
$smoServer2.ConnectionContext.set_EncryptConnection($FALSE)
#В конце поста я расскажу зачем в строке ниже убираем слеш из имени пользователя
$smoServer2.ConnectionContext.set_Login($LoginCredentials.UserName -replace("\"))
$smoServer2.ConnectionContext.set_SecurePassword($LoginCredentials.Password)
#4. Сравниваем логины
#Командлет выводит логины, которые есть на обоих серверах
compare-object -referenceobject $($smoserver1.logins) -differenceobject $($smoserver2.logins) -includeequal | where-object {$_.SideIndicator -eq "=="} |select-object InputObject
#Командлет выводит логины, которые есть на сервере 2, но нет на сервере 1
compare-object -referenceobject $($smoserver1.logins) -differenceobject $($smoserver2.logins) | where-object {$_.SideIndicator -eq "=>"} |select-object InputObject
#Командлет выводит логины, которые есть на сервере 1, но нет на сервере 2
compare-object -referenceobject $($smoserver1.logins) -differenceobject $($smoserver2.logins) | where-object {$_.SideIndicator -eq "<="} |select-object InputObject
#Можно перенаправить вывод в файл
compare-object -referenceobject $($smoserver1.logins) -differenceobject $($smoserver2.logins) -includeequal | where-object {$_.SideIndicator -eq "=="} |select-object InputObject > C:\Test.txt