如何从 powershell 启动 RDP 会话?我希望避免使用自定义脚本,因为我在 MSP 工作,最终会在一天内远程连接到跨不同域的计算机,因此在每个域中维护脚本的选择并非易事(除非您为我提供了解决方案) .
与命令行相同,您可以像这样启动 RDP 客户端:
mstsc /v:10.10.10.10:3389
您可以从桌面启动指向远程系统的 RDP 会话:
Start-Process "$env:windir\system32\mstsc.exe" -ArgumentList "/v:$machinename"
其中
$machinename
是远程系统的名称。系统将提示您输入凭据。
这里是函数格式。正如阿洛克所说。将其粘贴到您的 $profile 中
function Start-RDP ($computername)
{
Start-Process "$env:windir\system32\mstsc.exe" -ArgumentList "/v:$computername"
}
连接设置存储在 .rdp 文件中。无需在代码中指定计算机名称并列出其他设置。 使用 .rdp 文件中的设置连接 Hyper-V:
$hyperv = Get-VM -Name "VM-Name"
if($hyperv.State -eq "Running") {
Write-Host "Hyper-V is Running."
Start-Process "$env:windir\system32\mstsc.exe" -ArgumentList "$env:userprofile\Documents\RDP-Name.rdp"
} else {
Write-Host "Hyper-V is Stopped."
Start-VM -Name "VM-Name"
Start-Sleep -Seconds 6
Start-Process "$env:windir\system32\mstsc.exe" -ArgumentList "$env:userprofile\Documents\RDP-Name.rdp"
}
好吧,为了整个过程的美观,请在以不可见模式调用 .ps1 文件的同一文件夹中创建一个 .vbs 文件。
Set objShell = WScript.CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set F = FSO.GetFile(Wscript.ScriptFullName)
path = FSO.GetParentFolderName(F)
objShell.Run(CHR(34) & "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "" -ExecutionPolicy Bypass & ""'" & path & "\Ps1File.ps1'" & CHR(34)), 0, True
在控制台提示符处输入:
mstsc /v:SERVERNAME
尝试使用此命令:
mstsc /v:<server>
此外,您可以查看以下链接以获取更多参考:
https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/mstsc
如果您正在域中使用远程主机,您可以使用此命令:
Enter-PSSession -ComputerName host1 -Credential Username
如果没有,你应该执行一些步骤。
此链接还有许多其他选项: http://www.howtogeek.com/117192/how-to-run-powershell-commands-on-remote-computers/