Windows 服务器启动脚本上的 PSExec

PSExec on Windows Server Startup Script

我正在使用启动脚本以编程方式启动 Google 云计算实例 运行 Windows Server 2016。

启动脚本中的可执行文件需要以特定用户身份启动,因此我尝试使用 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 world,它应该写入一个文件。

如果我以任何用户身份登录并从 cmd 启动此确切命令,则会写入该文件。从启动脚本启动(在 Google 云计算引擎实例中作为 windows-startup-script-cmd 提供)导致未写入任何文件。

有什么解决办法?是否有更有效的方式以特定用户身份执行启动脚本?

看顾虑,不推荐使用PSEXEC

通常,我们使用 PSExec 来调用远程系统中的 GUI,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" 部分。请相应地合并占位符。

希望对您有所帮助...!!!