Boa*_*411 3 powershell powershell-2.0 powershell-3.0
我在Powershell命令中如何使用安全字符串来运行远程SQL查询.
以下命令在powershell中运行正常,因为它在我自己的帐户下运行 - 它还在提供用户名和密码的值时返回结果.
"SELECT COUNT(E.intEmployeeID) AS Count FROM Employees E WITH(NOLOCK)" - ServerInstance "SERVERA\INSTANCEA" -Database "DATABASEA" -u USER1 -p SomePassword
Run Code Online (Sandbox Code Playgroud)
我想自动化/安排这个脚本,因为我不想在我的脚本中使用clear txt中的密码,我正在研究如何将其设置为安全/加密的字符串.所以我使用下面的代码创建了一个加密密码.问题是我不知道如何将此密码传回我的命令..
这将创建加密的字符串并存储在文件中.这将是一个远程保护的文件.
$File = "C:\password.txt"
[Byte[]] $Key = (1..16)
$Password = "SomePassword" | ConvertTo-SecureString -AsPlainText -Force
$Password | ConvertFrom-SecureString -key $Key | Out-File $File
Run Code Online (Sandbox Code Playgroud)
然后,这将读取加密文件并以安全字符串存储...但是如何让我的Invoke SQL命令使用此密码.
$File = "C:\Cred.txt"
[Byte[]] $Key = (1..16)
$Password = Get-Content $File | ConvertTo-SecureString -Key $Key
Run Code Online (Sandbox Code Playgroud)
$ Password的值是System.Security.SecureString,如果我在原始命令中使用此变量,则命令失败并显示"登录失败的用户"
用于执行SQL查询的帐户是SQL身份验证帐户,而不是域帐户.
任何建议都是欢迎致谢.
小智 5
创建凭据对象:
$cred = new-object -typeName System.Management.Automation.PSCredential -ArgumentList $user, $pass
Run Code Online (Sandbox Code Playgroud)
然后,将密码转换为纯文本:
[string]$pass = $cred.GetNetworkCredential().Password
invoke-sqlcmd -UserName $user -Password $pass -Query 'select @@servername'
Run Code Online (Sandbox Code Playgroud)
Ivoke-SqlCmd只能使用纯文本密码.
| 归档时间: |
|
| 查看次数: |
3636 次 |
| 最近记录: |