用Powershell启用Windows Azure上的远程桌面服务
【题外话】
某天不小心点了XX管家的自动修复,虽然及时点了取消也看到了远程桌面服务成功被关闭,但是忙完该干的事以后竟然忘记了这件事,在断开远程桌面服务之前也忘记再次打开。以至于之后几天一直以为Azure出现了问题,直到某天突然想起来是自己忘重新打开远程桌面的问题。还好XX管家没有把Powershell禁掉,我们还可以使用Powershell再次启用远程桌面服务。
【文章索引】
【一、XX管家禁用远程桌面的实质】
再次使用XX管家将远程桌面禁用,发现实际上是这样的:
可见其并没有停止或者禁用Remote Desktop Services(TermService),而仅仅是将远程桌面的设置改为了“不允许连接到这台计算机”,并且也没有对防火墙配置进行修改。
【二、Powershell连接远程主机】
Powershell Remoting Protocol协议是基于HTTP或HTTPS协议的,其端口分别为5985(HTTP)和5986(HTTPS),对于后者与平时的HTTPS一样,都是使用SSL证书进行传输加密的。对于Azure默认的虚拟机,已经配置好了HTTPS协议的Powershell,可以直接使用5986端口进行通信。
Powershell连接远程主机的命令是“Enter-PSSession”,可以参考这里。而对于连接Azure,我们使用SSL证书+用户名即可连接,命令如下:
- Enter-PSSession -ComputerName 域名或IP地址 -Port 5986 -Credential 用户名 -UseSSL
如果我们现在直接输入命令的话,将会提示下列信息:
所以我们需要获取服务上的证书,然后存到信任的证书颁发机构中。
对于IE浏览器,首先需要在“Internet选项”的“高级”中关闭“显示友好 HTTP 错误信息”,然后访问“https://域名:5986”,在确认了继续访问网站后,点击“证书错误”,然后选择“查看证书”,接下来可以在“常规”选项卡中选择“安装证书”或在“详细信息”选项卡中选择“复制到文件”。
对于Chrome浏览器(不论Windows下的还是Linux下的),可以点击网址前边的图标,在“Connection”下点击“Certificate Information”,如果在Windows下操作的话,出现的对话框与IE的相同,如果在Linux下操作,请选择“Export”,然后可以设置文件的扩展名为“.cer”。
如果上述步骤直接点击了“安装”证书,将会出现“证书导入向导”;如果选择的是保存.cer文件,那么双击打开.cer文件,选择“安装证书”也会出现“证书导入向导”。在向导中可以选择将证书为当前用户保存也可以为当前计算机保存,然后选择“将所有的证书都放入下列存储”,然后选择“受信任的根证书颁发机构”,就可以了。
接下来再输入上述的命令提示符会变为如下的形式说明登陆成功:
[xxxxxxxx.cloudapp.net]: PS C:\Users\用户名\Documents>
【三、使用Powershell启用远程桌面】
对于管理Windows,可以使用WMI来实现,Powershell也提供了操作WMI的命令。
比如我们获取Remote Desktop Services(TermService)服务的状态,可以使用如下的命令:
- Get-WMIObject -query "select * from win32_service where name='TermService'" | out-string
而如果远程桌面服务是正在运行的,我们则可以使用获取远程桌面服务的运行状态,关于Win32_TerminalServiceSetting这个WMI类可以参考这里,当然如果操作系统是2K3或以下版本的话Namespace就应该改为ROOT\CIMV2:
- Get-WMIObject Win32_TerminalServiceSetting -Namespace ROOT\CIMV2\TerminalServices
比如如果远程桌面设置为“不允许连接到这台计算机”,那么如下的“AllowTSConnections”就会为0。
Win32_TerminalServiceSetting有个方法是SetAllowTSConnections,其方法原型如下:
- uint32 SetAllowTSConnections(
- [in] uint32 AllowTSConnections,
- [in] uint32 ModifyFirewallException
- );
可以看到其可接受两个参数,分别是是否启用远程桌面连接以及是否修改防火墙例外设置。例如我们仅修改允许连接远程桌面,则可以使用如下的命令:
- (Get-WMIObject Win32_TerminalServiceSetting -Namespace ROOT\CIMV2\TerminalServices).SetAllowTSConnections(1)
【四、其他可能导致无法使用远程桌面的问题】
除了将远程桌面的设置改为了“不允许连接到这台计算机”外,还可能出现没有开启远程桌面服务或者在防火墙配置中禁用了远程桌面端口。
如果获取发现远程桌面服务没有打开,那么我们是没法在Powershell中通过WMI对远程桌面进行设置的(获取、设置都不可,表现为命令一直卡住无法继续),所以我们需要开启远程桌面服务:
如果Remote Desktop Services被禁用,我们可以使用Set-Service命令首先需要将其修改为手动启动(默认值):
- Set-Service -Name TermService -StartupType Manual
然后使用Start-Service启动该服务(当然net start也是可以的):
- Start-Service -Name TermService
此外,开启防火墙中远程桌面端口除了使用WMI外,也可以使用netsh命令,我们可以使用如下命令获取防火墙的规则,当然规则名称在不同操作系统下还是有出入的,这里的是Windows Server 2008 R2中文版的规则名称:
- netsh advfirewall firewall show rule name="远程桌面(TCP-In)"
然后也可以使用如下的命令启用这些规则,这里的操作系统同上,如果是英文操作系统的话就应该替换为“remote desktop”:
- netsh advfirewall firewall set rule group="远程桌面" new enable=Yes
不过这种方式相对还是复杂很多,就不如使用WMI操作更简单些了。
【相关链接】
- CSI: Re-enabling Remote Desktop with PowerShell after you've blocked it with your own firewall rule:http://www.hanselman.com/blog/CSIReenablingRemoteDesktopWithPowerShellAfterYouveBlockedItWithYourOwnFirewallRule.aspx
- Relationship to Other Protocols:http://msdn.microsoft.com/en-us/library/dd305175.aspx
- Enter-PSSession:http://msdn.microsoft.com/en-us/library/hh849707
- PowerShell探秘(4)WMI对象:远程桌面开关:http://blog.csdn.net/zooen2011/article/details/12960989
- Win32_TerminalServiceSetting class:http://msdn.microsoft.com/zh-cn/library/aa383640
用Powershell启用Windows Azure上的远程桌面服务的更多相关文章
- 在WINDOWS SERVER 上或远程桌面中使用 MUTEX
引用: http://www.cnblogs.com/fg0711/archive/2012/05/03/2480502.html 使用Mutex需要注意的两个细节 可能你已经注意到了,例子中在给Mu ...
- 在工作组的环境中配置Windows 2012 R2的远程桌面服务
在工作组的环境中配置Windows 2012 R2的远程桌面服务 How to configure Remote Desktop Service in Windows 2012 R2 workgrou ...
- Windows Azure上的大数据服务: HDInsight的介绍
这个视频介绍了目前非常流行的大数据处理框架Hadoop的Windows Azure上的实现:HDInsight,以及利用MapReduce来对大数据进行分析,利用Hive进行查询,利用客户端Power ...
- Windows Server 2008 R2远程桌面服务配置和授权激活
远程桌面服务安装好之后使用的是120天临时授权,所以会跳出以下提示,我们介绍远程桌面授权的激活. 现在我们使用命令 mstsc /admin 强制登录服务器 需要在“远程桌面服务”--安装“远程桌面授 ...
- Windows Server 2008 R2远程桌面服务安装配置和授权激活
1.安装 2.远程桌面授权激活 2.1 管理工具——远程桌面服务——(远程桌面授权管理)RD授权管理器: 2.2 由于RD授权服务器还未激活,所以授权服务器图标右下角显示红色×号: 点服务器展开——右 ...
- 排查 Azure 虚拟机的远程桌面连接问题
与基于 Windows 的 Azure 虚拟机 (VM) 的远程桌面协议 (RDP) 连接可能会因各种原因而失败,使用户无法访问 VM. 问题可能出在 VM 上的远程桌面服务.网络连接或主计算机上的远 ...
- Windows 2003/2008更改远程桌面端口脚本
保存为bat文件,点击运行按提示输入新端口自动完成,直接下载更改远程桌面端口脚本 @echo off color 0a title @@ 修改Windows XP/2003/2008远程桌面服务端 ...
- 如何将SQL Server运行到Windows Azure上
从2012年6月6日开始,Windows Azure上一些强大的新功能现在可用于预览,包括新的Windows Azure虚拟机(VM).其中有关Windows Azure虚拟机最强大的一件事是他们利用 ...
- [转]Windows Azure上安装SharePoint 2013
基于Windows Azure 安装SharePoint 2013 前段时间写的基于Windows Azure安装SharePoint系列,由于Azure的体验账号过期了,所以不得不暂停.今天有幸参加 ...
随机推荐
- 你不知道的CSS背景—css背景属性全解
CSS背景在网页设计中使用频率非常高,然而对于这个开发人员很熟悉的CSS属性,却隐藏着许多不为初级开发人员熟知的细节,这篇文章尝试扒开这层不为人知的面纱. 首先列举一下CSS中关于元素背景的所有属性并 ...
- 第三十篇:SOUI模块结构图及SOUI框架图
模块结构图: SOUI框架图:
- java相关的小问题
对线程异常的处理 调用Thread的静态方法Thread.setDefaultUncaughtExceptionHandler()
- CommonJS, AMD 和 RequireJS之间的关系(转载)
先说说CommonJS CommonJS - 大家是不是觉得JavaScript仅仅是一个客户端的编译语言,其实JavaScript设计之初不仅仅是针对客户端设计的语言.后来只是由于Web的迅速流行, ...
- 安装zeppelin
安装zeppelin 1.默认安装好spark集群 2.安装zeppelin 1.解压安装包 tar zxvf zeppelin-0.5.5-incubating-bin-all.tgz 2.配置环境 ...
- Javascript-DOM总结
DOM总结 1.DOM的含义 DOM是Document Object Model文档对象模型的缩写.根据W3C DOM规范,DOM是一种与浏览器,平台,语言无关的接口,使得你可以访问页面其他的 ...
- 1.3 jQuery基础
使用jQuery需要引用jQuery文件(页面引用多个js文件时jQuery在最前面) <script src="jquery-1.11.2.min.js"></ ...
- 分享篇——我的Java学习路线
虽然之前我是开发出身,但是我学习的语言是Objective-c,这个语言使用起来范围比较窄,对于自动化学习来说也是无用武之地,所以我自己学习了Java,对于一个有开发经验的人来说学习一门新语言相对来说 ...
- java中被各种XXUtil/XXUtils辅助类恶心到了,推荐这种命名方法
且看一下有多少个StringUtils 列举一下XXUtil/XXUtils恶劣之处 1. 不知道该用XXUtil还是用XXUtils, 或者XXHelper, XXTool 2. 不知道该用a.ja ...
- Bug库
netsh int tcp set global ecn=disable C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe ...