我以编程方式启动了一个运行Windows Server 2016的Google云计算实例和一个启动脚本。
启动脚本中的可执行文件需要以特定用户身份启动,因此我尝试使用psexec
启动它来模拟所述用户:
C:/psexec.exe \\\\WIN-SERVER-2016 -u WIN-SERVER-2016\\customuser -p custompassword -accepteula -w "c:/app" cmd /c node index.js
c:/app/index.js
包含一个简单的hello世界,它应该写入文件。
如果我以任何用户身份登录并从cmd启动此命令,则会写入该文件。从启动脚本(在Google云计算引擎实例中以windows-startup-script-cmd
提供)启动,不会写入任何文件。
可能是什么解决方案?有没有更有效的方法来执行作为特定用户的启动脚本?
答案 0 :(得分:1)
考虑到这个问题,我建议您不要使用 PSEXEC 。
非常,我们使用PSExec来调用PS不支持原生的远程系统中的GUI。
在您的情况下,我建议您使用 Invoke-Command
运行这样的事情:
$username = 'WIN-SERVER-2016\customuser'
$password = "custompassword"
$secstr = New-Object -TypeName System.Security.SecureString
$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $secstr
$Script_block = {cmd /c node index.js}
Invoke-Command -ComputerName WIN-SERVER-2016 -Credential $cred -ScriptBlock $Script_block
如果您使用 windows-startup-script-cmd
,也应该从元数据键中获取它注意:我没有考虑 accepteula -w“c:/ app”部分。请相应地合并占位符。
希望它有所帮助...... !!!