首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Server帐户和加密密码连接到Server并执行调用-sqlcmd

使用Server帐户和加密密码连接到Server并执行调用-sqlcmd
EN

Stack Overflow用户
提问于 2018-10-22 03:26:08
回答 1查看 431关注 0票数 0

会很感激你的帮助。我有一个PowerShell脚本,用于更新Server表中的列。当使用域帐户时,它工作得很好。

但是,我希望在用户登录期间运行,并使用Server帐户,而不是Windows帐户,但我不知道为什么它不能工作。

当key/txt文件使用域帐户时,没有问题。但是,当使用Server帐户详细信息替换时,不会转到。

代码语言:javascript
复制
$SQLUser = "Username"
$SQLPasswordFile = "\\pathto\UserPW.txt"
$SQLKeyFile = "\\pathto\UserPW.key"
$SQLkey = Get-Content $SQLKeyFile
$SQLMyCredential = New-Object -TypeName System.Management.Automation.PSCredential `
-ArgumentList $SQLUser, (Get-Content $SQLPasswordFile | ConvertTo-SecureString -Key $SQLkey)
$SQLCredentials = Get-Credential -Credential $SQLMyCredential
$SQLSession = New-PSSession -ComputerName "uhpkpdb01" -Credential $SQLCredentials
Invoke-Command -Session $SQLSession -ScriptBlock {
$exist = Invoke-Sqlcmd "select count(1) from [table] where USER_NAME = '$($args[0])'" -ServerInstance "SERVERNAME"
if ($exist.column1 -eq "1") {
Invoke-Sqlcmd "UPDATE [table] SET PASSWORD = '$($args[1])' WHERE USER_NAME = '$($args[0])'"
Write-Host "Account Updated"  }
else {
Write-Host "User Does Not Exists"}} -ArgumentList $env:USERNAME, "PASSWORD"
Remove-PSSession $SQLSession

我得到了

New:连接到远程服务器失败:用户名或密码不正确。

我可以使用Server帐户连接到SSMS,并打开和更新表。我一定是不正确地传递用户名,但我想不出如何正确地做到这一点。

如能提供任何协助,将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2018-10-22 04:09:48

不能将包含SQL的PSCredential对象传递给Invoke-Command。命令唯一能理解的是Windows凭据。

如果您安装了模块,可以从您自己的机器上直接传递和调用Invoke-SqlCmd命令。

如果需要在远程会话上使用SQL,则必须将该凭据对象传递到远程会话中,以便可以在脚本块中使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52922025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档