通过Powershell连接到远程计算机

问题描述 投票:0回答:1

我们有8台机器存在于客户位置。这8台机器用于我们的自动测试执行。问题是,如果离岸位置的任何人通过RDP连接到这些机器,那么机器在15分钟左右开始显示锁定的屏幕并且我们的自动脚本开始失败或者没有截屏。

所以我编写了一个powershell脚本来远程重启这台机器(Say Machine 1),然后执行所需的bat文件,然后触发执行。重启正常,并且看起来bat文件正在打开,因为我们的框架读取文件并且集中报告中的状态更改为Executing。问题是,它只在很长一段时间内处于执行状态,如果我连接到机器(即机器1)以检查它被卡住的原因,机器将在重启后以相同的方式打开(即应用策略设置等,开始加载所有启动程序/文件)和bat文件都没有打开,甚至在任务管理器中也看不到进程。那么我的下面的代码究竟在哪里被执行?是在不同的会议。如何确保成功执行此bat文件并继续在机器中运行,当我连接时,我能够看到相同的内容。

Enter-PSSession -ComputerName MachineName -Credential Username

Restart-Computer -ComputerName MachineName-Force -Credential Username

Set-Location -Path C:\dev\orcas-agent-uft-deployment

Start-Process "cmd" -ArgumentList "/c","C:\dev\AgentUFT\AgentUFT.bat" 
 -WorkingDirectory "C:\dev\AgentUFT"  -WindowStyle Maximized

难道我做错了什么?重启后我等待5分钟,然后触发启动过程

powershell remote-desktop
1个回答
0
投票

有几件事......

当您启动交互式会话时,您应该终止更改外观;例如,连接到foo:

PS C:\> Enter-PSSession -ComputerName 'foo'
[foo]: PS C:\> ....

如果你没有看到类似的行为,我认为你没有联系。

我会重新启动主机然后建立与它的连接。我想(我以为我还没有确认)重启主机会破坏远程交互会话。

Restart-Computer -ComputerName MachineName-Force -Credential Username
Enter-PSSession -ComputerName MachineName -Credential Username
Set-Location -Path C:\dev\orcas-agent-uft-deployment
...

我不确定以下内容是否符合预期。这将在远程计算机上启动一个进程(不是你的)。

Start-Process "cmd" -ArgumentList "/c","C:\dev\AgentUFT\AgentUFT.bat" 
 -WorkingDirectory "C:\dev\AgentUFT"  -WindowStyle Maximized

登录主机时,您将看不到终端窗口已打开。如果要查看远程计算机上的会话,请键入$PID,然后运行以下命令在远程计算机上查找该进程ID:

Get-Process -Id 72 -ComputerName foo

也就是说,为什么不从交互式会话中运行批处理中的命令呢?您也可以从Invoke-Command单独运行命令。所有这些选项都可以让您更好地了解脚本遇到的错误。

查看这些参考资料......

Powershell Core(PS 6)https://docs.microsoft.com/en-us/powershell/scripting/learn/remoting/running-remote-commands?view=powershell-6

Windows Powershell(PS 5.1)https://docs.microsoft.com/en-us/powershell/scripting/learn/remoting/running-remote-commands?view=powershell-5.1

© www.soinside.com 2019 - 2024. All rights reserved.