首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用Powershell关闭Windows远程桌面?

如何用Powershell关闭Windows远程桌面?
EN

Stack Overflow用户
提问于 2011-11-25 11:09:39
回答 4查看 7.5K关注 0票数 6

我们所有的测试箱都运行在VM上(windows 2003/08),测试人员只通过远程桌面访问它们。

一些维护步骤需要将所有用户踢出系统,并通过远程桌面禁用访问。

我开始用powershell编写维护脚本,并正在寻找一种暂时停用远程桌面的方法。这有可能吗,有什么直截了当的解决办法吗?

到目前为止,我已经尝试过:

  • 一位同事建议关闭netlogon服务,但我仍然可以使用远程桌面登录。
  • 另一位同事建议禁用 带有防火墙的远程桌面,但不知怎么的,感觉不到。 对我来说(?)因为我不想改变一个系统的一部分来影响另一个部分。我是不是太挑剔了.?

任何暗示都非常感谢。

干杯,托比

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-03 12:25:38

现在我找到了一个适合我的解决方案。Windows 2008附带了一个名为"终端服务服务器漏模式“的特性

..。TS服务器耗尽模式防止新用户登录到服务器上,同时允许当前登录的用户重新连接到现有会话。通过等待现有用户保存其工作并注销,管理员可以在不造成用户数据丢失的情况下将终端服务器关闭以进行维护。

在激活排水模式之前,我确保没有人登录,然后使用以下代码激活排水模式:

代码语言:javascript
运行
复制
Invoke-Command -ComputerName myServerHostName -ScriptBlock
{
   Set-ItemProperty -Path "HKLM:\SYSTEM\Currentcontrolset\control\Terminal Server" -Name TSServerDrainMode -Value 1
}

虽然我正在更改注册表项,但不需要重新启动服务器才能使更改生效。这不需要重新启动就能工作。

当我完成维护工作时,我使用"-Value 0“取消活动排水模式,用户可以再次登录。

就像一种魅力!

我最初的回答是:

我通过广泛的网络搜索找到了以下的解决方案(也是未经测试的):

代码语言:javascript
运行
复制
$Terminal = Get-WmiObject Win32_Terminal –Computer “ComputerName”
$Terminal.Enable($True)

我还发现了其他可能的、有趣的代码片段或主题的变体:

$myWmiObject = Get-WmiObject -namespace “rootCIMV2TerminalServices” -class Win32_Terminal -Computer “ComputerName” -Authentication PacketPrivacy

Set-WmiInstance -namespace “rootCIMV2TerminalServices” -class Win32_Terminal -ComputerName “ComputerName” -Authentication PacketPrivacy -Argument @{fEnableTerminal=0}

Get-WmiObject -ComputerName “ComputerName” -namespace root/cimv2/terminalservices -class Win32_Terminal -Authentication PacketPrivacy

票数 2
EN

Stack Overflow用户

发布于 2011-11-25 11:18:26

你需要设置

代码语言:javascript
运行
复制
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\fDenyTSConnections 

值默认为1,以禁用远程桌面,但需要重新启动。

另一种似乎不需要重新启动(未经测试)的方式:

代码语言:javascript
运行
复制
$ts=get-WMIObject Win32_TerminalServiceSetting  -computername remotemachinename

$ts.SetAllowTSConnections(0)
票数 2
EN

Stack Overflow用户

发布于 2015-03-04 14:54:45

我经常使用这个gWmi代码:

代码语言:javascript
运行
复制
#Remote change logon /disable
$TS_Connector = gwmi Win32_TerminalServiceSetting -N "root/cimv2/terminalservices" -computername $ServerName -Authentication PacketPrivacy
$TS_Connector.Logons=1
$TS_Connector.Put()

以及启用登录

代码语言:javascript
运行
复制
#Remote change logon /enable
$TS_Connector = gwmi Win32_TerminalServiceSetting -N "root/cimv2/terminalservices" -computername $ServerName -Authentication PacketPrivacy
$TS_Connector.Logons=0
$TS_Connector.Put()

因为nead RCP已打开,因此默认情况下在windows上禁用了调用命令()和RPC连接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8268216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档