我期待在我的本地网络(工作组,无域加入)中的目标机器上运行特殊命令。
这些机器之前已经配置了Enable-PSremoting
等等,以容忍 Windows 远程管理,以便我们可以在目标机器上执行以下命令。
这些命令工作正常,但如果我想启动一些特殊命令(如start-process),它们就不会作为本地机器执行。
例如,如果我在本地机器上运行:
> Start-Process -Filepath "cmd.exe"
它启动 cmd 进程。如果我远程执行此操作,就像这样
Invoke-Command -Computername "my-target-ip" -ScriptBlock {Start-Process -Filepath "cmd.exe"} -Credential get-credential
目标机器上没有执行cmd窗口。
这将允许我在目标机器上安装一些特殊软件包,这些软件包需要一些自动 GUI 配置,而这些配置不能仅通过 powershell 进行,例如暂停更新和通过 GUI 设置标准浏览器应用程序。否则,一些常规配置可以正常工作(防火墙设置、写入文件、启用网络配置等)。
非常感谢。
答案1
Invoke-Command
适用于非交互式命令。如果我没记错的话,使用它你不会得到交互式提示,当然,如果你想在远程计算机上启动一个程序,它应该在你启动之前就存在那里。
如果您想在远程计算机上使用交互式会话,您应该使用Enter-PSSession
反而:
Enter-PSSession -Computer "remote" -Credential (Get-Credential)
如果您确实需要,您应该能够在此会话中启动 cmd 提示符。
如果您需要运行一些非交互式的相关命令,那么该New-PSSession
cmdlet 以及 可能会引起您的兴趣Invoke-Command -Session $session
。