Windows Server启动脚本上的PSExec

时间:2017-01-08 22:14:55

标签: windows powershell google-app-engine google-cloud-platform psexec

我以编程方式启动了一个运行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提供)启动,不会写入任何文件。

可能是什么解决方案?有没有更有效的方法来执行作为特定用户的启动脚本?

1 个答案:

答案 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”部分。请相应地合并占位符。

希望它有所帮助...... !!!