尝试在 Winpe 中使用 Get-Credential 连接到 SQL
trying to connect to SQL using Get-Credential in Winpe
有谁知道如何使用 powershell 将 Get-Credentials 传递给 SQL 登录?
我尝试了很多不同的方法,但都没有成功。
这需要在 winpe 中 运行 - 我可以使用 Get-Credential 获取凭据,但我需要使用它们来连接到 SQL 数据库 - 我一直在获取。
'NT AUTHORITY\ANONYMOUS LOGIN' 登录失败下面的代码在 Windows 中工作正常 - 虽然我是以用户身份登录的,但它不能传递凭据。如果我删除 trusted_connection=true;我登录失败,这是对 WINPE 的最佳测试,因为没有人登录。有没有办法将这些 Get-Credentials 传递给 SQL?
该代码或相同代码在 WINPE 中不起作用 - 不知道为什么?
$Cred = Get-Credential
Function SQL_CONNECT ($Query){
$ConnectionString = "server=VM855;database=LDMS2016;user id=$Cred.Username;password=$Cred.Password;trusted_connection=true;"
$SqlConnection = New-Object System.Data.SQLClient.SQLConnection($ConnectionString)
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.Connection = $SqlConnection
$SqlCmd.CommandText = $Query
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$a = $SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0]
}
$Owners = SQL_CONNECT "Select Task_Name, Task_owner, first_action_query_date from PROV_HISTORY_TASK" | Select-Object Task_Owner, first_action_query_date
$Owners
SQL 连接使用:
- Windows 身份验证 ("Trusted_Connection=True")
或
- SQL 身份验证 ("User Id=myUsername;Password=myPassword;")
不能同时拥有"Trusted_Connection"和"User ID/Password",必须选择一个。
为了使用 Windows 身份验证,PowerShell 进程必须 运行ning 作为有权访问数据库的用户。也就是说,您必须以模拟该用户的身份启动 PowerShell 进程,并且 运行 您的代码。
粗略示例如下所示:
# Get the other user's credentials
$credential = Get-Credential
# Execute a scriptblock as another user
$commands = @'
#....code....
$ConnectionString = "server=VM855;database=LDMS2016;trusted_connection=true;"
#.....etc....
'@
Start-Process -FilePath Powershell.exe -LoadUserProfile -Credential $credential -ArgumentList '-Command', $commands
或者,更简单的方法是只使用 SQL 身份验证,并对 username/password.
进行硬编码
$ConnectionString = "server=VM855;database=LDMS2016;user id=Username;password=Password;"
或者至少你必须使用 Read-Host
来读入用户名和密码,因为 $Cred.Password
returns System.Security.SecureString
而不是纯文本的密码.
例如
$Username = Read-Host "User:"
$Password = Read-Host "Password:"
$ConnectionString = "server=VM855;database=LDMS2016;user id=$Username;password=$Password;"
有谁知道如何使用 powershell 将 Get-Credentials 传递给 SQL 登录?
我尝试了很多不同的方法,但都没有成功。
这需要在 winpe 中 运行 - 我可以使用 Get-Credential 获取凭据,但我需要使用它们来连接到 SQL 数据库 - 我一直在获取。
'NT AUTHORITY\ANONYMOUS LOGIN' 登录失败下面的代码在 Windows 中工作正常 - 虽然我是以用户身份登录的,但它不能传递凭据。如果我删除 trusted_connection=true;我登录失败,这是对 WINPE 的最佳测试,因为没有人登录。有没有办法将这些 Get-Credentials 传递给 SQL? 该代码或相同代码在 WINPE 中不起作用 - 不知道为什么?
$Cred = Get-Credential
Function SQL_CONNECT ($Query){
$ConnectionString = "server=VM855;database=LDMS2016;user id=$Cred.Username;password=$Cred.Password;trusted_connection=true;"
$SqlConnection = New-Object System.Data.SQLClient.SQLConnection($ConnectionString)
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.Connection = $SqlConnection
$SqlCmd.CommandText = $Query
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$a = $SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0]
}
$Owners = SQL_CONNECT "Select Task_Name, Task_owner, first_action_query_date from PROV_HISTORY_TASK" | Select-Object Task_Owner, first_action_query_date
$Owners
SQL 连接使用:
- Windows 身份验证 ("Trusted_Connection=True")
或
- SQL 身份验证 ("User Id=myUsername;Password=myPassword;")
不能同时拥有"Trusted_Connection"和"User ID/Password",必须选择一个。
为了使用 Windows 身份验证,PowerShell 进程必须 运行ning 作为有权访问数据库的用户。也就是说,您必须以模拟该用户的身份启动 PowerShell 进程,并且 运行 您的代码。
粗略示例如下所示:
# Get the other user's credentials
$credential = Get-Credential
# Execute a scriptblock as another user
$commands = @'
#....code....
$ConnectionString = "server=VM855;database=LDMS2016;trusted_connection=true;"
#.....etc....
'@
Start-Process -FilePath Powershell.exe -LoadUserProfile -Credential $credential -ArgumentList '-Command', $commands
或者,更简单的方法是只使用 SQL 身份验证,并对 username/password.
进行硬编码 $ConnectionString = "server=VM855;database=LDMS2016;user id=Username;password=Password;"
或者至少你必须使用 Read-Host
来读入用户名和密码,因为 $Cred.Password
returns System.Security.SecureString
而不是纯文本的密码.
例如
$Username = Read-Host "User:"
$Password = Read-Host "Password:"
$ConnectionString = "server=VM855;database=LDMS2016;user id=$Username;password=$Password;"