Я пытаюсь подключиться к удаленной базе данных sql и просто выполняю запрос «select @@ servername» в Powershell. Я пытаюсь сделать это без использования встроенной безопасности. Я боролся с "get-credential" и "invoke-sqlcmd", только чтобы обнаружить (я думаю), что вы не можете передать пароль от "get-credential" другим командлетам Powershell.
Вот код, который я использую:
add-pssnapin sqlserverprovidersnapin100
add-pssnapin sqlservercmdletsnapin100
# load assemblies
[Reflection.Assembly]::Load("Microsoft.SqlServer.Smo, `
Version=9.0.242.0, Culture=neutral, `
PublicKeyToken=89845dcd8080cc91")
[Reflection.Assembly]::Load("Microsoft.SqlServer.SqlEnum, `
Version=9.0.242.0, Culture=neutral, `
PublicKeyToken=89845dcd8080cc91")
[Reflection.Assembly]::Load("Microsoft.SqlServer.SmoEnum, `
Version=9.0.242.0, Culture=neutral, `
PublicKeyToken=89845dcd8080cc91")
[Reflection.Assembly]::Load("Microsoft.SqlServer.ConnectionInfo, `
Version=9.0.242.0, Culture=neutral, `PublicKeyToken=89845dcd8080cc91")
# connect to SQL Server
$serverName = "HLSQLSRV03"
$server = New-Object -typeName Microsoft.SqlServer.Management.Smo.Server -argumentList $serverName
# login using SQL authentication
$server.ConnectionContext.LoginSecure=$false;
$credential = Get-Credential
$userName = $credential.UserName -replace("\\","")
$pass = $credential.Password
$server.ConnectionContext.set_Login($userName)
$server.ConnectionContext.set_SecurePassword($credential.Password)
$DB = "Master"
invoke-sqlcmd -query "select @@Servername" -database $DB -serverinstance $servername -username $username -password $pass
Если просто ввести пароль в конец строки invoke-sqlcmd, он заработает. Это потому, что вы не можете использовать get-credential с invoke-sqlcmd?
Если да ... каковы мои альтернативы?
Большое спасибо за вашу помощь
Эмо