Моя компания должна убедиться, что с каждого компьютера выставляется счет нужному отделу (это очень большая компания). Я делаю это, удостоверяясь, что каждому компьютеру выставлен счет с идентификатором отдела последнего пользователя, который вошел в систему.
Когда у меня есть идентификаторы пользователей для всех компьютеров (с использованием сценария PS), мне нужно выполнить запрос SQL, чтобы выбрать коды отделов для каждого пользователя. Затем я могу обновить платежную информацию этими данными.
Однако я не могу заставить SQL-запрос работать в PS. Он работает в консоли управления сервером, но было бы проще сделать один шаг, а не два. Кажется, я передаю учетные данные с помощью «Get-Credential», поскольку я получаю сообщение об ошибке в одном и том же месте ($ connection.Open ()).
Я знаю, что мои учетные данные работают, но я все еще получаю ошибку "Исключение вызывает" Открыть "с аргументом (ами)" 0 ": вход в систему для пользователя 'MY_ID' не выполнен."
Что мне здесь не хватает? Любая помощь будет оценена!
function Invoke-SQL {
$cred = Get-Credential
$cred.Password.MakeReadOnly()
$cred.UserName -replace("\\","")
$sqlCred = New-Object System.Data.SqlClient.SqlCredential($cred.username,$cred.password)
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = “Data Source=DS;Initial Catalog=DB”
$connection.Credential = $sqlCred
$sqlCommand = "Select * from HR_DATA
Where User_ID = '$ID'"
$command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection)
$connection.Open()
$adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
$dataset = New-Object System.Data.DataSet
$adapter.Fill($dataset) | Out-Null
$connection.Close()
$dataset.Tables[0]
}
Invoke-SQL