作为某些部署自动化的一部分,我尝试使用PowerShell在远程计算机上运行可执行文件。可伸缩的需要以特定用户身份运行,以便它可以连接到适当的数据库来完成其工作。
例如,Powershell脚本作为用户“Org \ TFSUser”在Machine1上运行。它需要在Machine2上运行可执行文件作为“Devel \ BuildServices”用户。我正在尝试使用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中,我提供了指定here的参数“-Impersonation 3”。我的理解是,这将启动远程进程,同时冒充我传递的用户凭据。
任何人都可以告诉我如何使用特定用户的凭据在远程计算机上运行可执行文件。
答案 0 :(得分:0)
尝试使用New-PSSession
和Invoke-Command
进行CredSSP
身份验证,因为您似乎有双跳身份验证问题。
检查我对以下问题的回答,看看如何设置和使用CredSSP,这很简单。