作为部署自动化的一部分,我尝试使用powershell在远程机器上运行可执行文件。可执行文件需要以特定用户身份运行,以便它可以连接到适当的数据库来执行其工作。
例如,Powershell脚本以用户"Org\TFSUser“的身份在Machine1上运行。它需要以"Devel\BuildServices“用户身份在Machine2上运行可执行文件。我正在尝试使用Invoke-WmiMethod命令来启动远程服务器上的可执行文件,如下所示。这似乎是可行的,因为它在远程机器上运行可执行文件,但使用匿名用户登录。我在日志中看到的错误是System.Data.SqlClient.SqlException: Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
$username = "devel\BuildServices"
$password = cat Deploy\SecurePasswords\PasswordForBuildServicesAsSecureString.txt | convertto-securestring
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password
Invoke-WmiMethod -class Win32_process -name Create -ArgumentList ("C:\TeamCityDeployments\Importer\Importer.exe -pFile:C:\TeamCityDeployments\Importer\alphaParams.txt >> importer.log") -ComputerName "Machine2.devel" -Impersonation 3 -EnableAllPrivileges -Credential $cred要在不提示的情况下使用密码构建凭据对象,我将使用安全字符串作为指定的here。
在Invoke-WmiMethod中,我提供了参数"-Impersonation 3“作为指定的here。我的理解是,这将启动远程进程,同时模拟我传入的用户凭据。
谁能告诉我如何使用特定用户的凭据在远程计算机上运行可执行文件。
发布于 2013-10-02 17:19:08
尝试将New-PSSession和Invoke-Command与CredSSP身份验证一起使用,因为您似乎有双跳身份验证问题。
查看我对以下问题的回答,了解如何设置和使用CredSSP,它非常简单。
https://stackoverflow.com/questions/19109456
复制相似问题