PowerShell探秘(4)WMI对象:远程桌面开关

查询远程桌面服务状态:

get-wmiobject -query "select * from win32_service where name='TermService'" | out-string

下面自定义函数,在本地执行下面脚本,开启和关闭远程桌面,win7 、2008可以执行,在win 2003需要稍微修改一点

write-host "---------------华丽的分割线------------------"  
function OTR(){  
$ts=get-WMIObject Win32_TerminalServiceSetting -Namespace ROOT\CIMV2\TerminalServices
    $r=$ts.AllowTSConnections  
    if($r -eq 1)  
    {  
    Write-Host "远程桌面处于开启状态,无需重复开启"  
    }else{  
    $ts.SetAllowTSConnections(1) | Out-Null  
    Write-Host "远程桌面开启成功"  
    }  
}  
function CTR(){
$ts=get-WMIObject Win32_TerminalServiceSetting -Namespace ROOT\CIMV2\TerminalServices
$r=$ts.AllowTSConnections  
    if($r -eq 0)  
    {  
    Write-Host "远程桌面处于关闭状态,无需重复关闭"  
    }else{  
    $ts.SetAllowTSConnections(0) | Out-Null  
     Write-Host "远程桌面关闭成功"  
    }  
}
#查看状态
function STR(){
$ts=get-WMIObject Win32_TerminalServiceSetting -Namespace ROOT\CIMV2\TerminalServices
$r=$ts.AllowTSConnections  
    if($r -eq 0)  
    {  
    Write-Host "远程桌面处于[关闭]状态"  
    }
    if($r -eq 1)  
    {  
    Write-Host "远程桌面处于[开启]状态"  
    }
}
#End查看状态
#输入控制
function CustOrderSW()  {  
$ins=read-host "输入命令"
switch($ins){
(0)
{CTR 
CustOrderSW;
break}
(1)
{
OTR 
CustOrderSW;
break
}
(2)
{
STR 
CustOrderSW;
break}
default{
"不存De命令" 
CustOrderSW;
break
}
}
}
#end输入控制
#调用自定义函数
CustOrderSW

上面自定义函数放在win 2003下执行却无效,报错

Get-WmiObject : 无效名称空间 
所在位置 行:1 字符: 18
+ $ts=get-WMIObject <<<<  Win32_TerminalServiceSetting -Namespace ROOT\CIMV2\TerminalServices
    + CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], ManagementException
    + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

原因是WMI版本不同,在win 2003的WMI里面的 ROOT\CIMV2里面没有TerminalServices对象

解决办法很简单,因为在2003里面远程控制对象时在CIMV2命名空间下面

win2003这样写:$ts=get-WMIObject Win32_TerminalServiceSetting -Namespace ROOT\CIMV2

win2008这样写:$ts=get-WMIObject Win32_TerminalServiceSetting -Namespace ROOT\CIMV2\TerminalServices

--------------------------------------------------------------------------------------------------------------------------------------------

Win server 2003的WMI版本


------------------

Win7 x64的WMI版本




-------------------------------------------------------------------------------------------------------------------------------------------------------------

下面代码放在web版中可执行,主要是没用write-host输出,其他没改变

搜索

  
function OTR(){  
$resu=""
$ts=get-WMIObject Win32_TerminalServiceSetting -Namespace ROOT\CIMV2\TerminalServices
    $r=$ts.AllowTSConnections  
    if($r -eq 1)  
    {  
    $resu= "远程桌面处于开启状态,无需重复开启"  
    }else{  
    $ts.SetAllowTSConnections(1) | Out-Null  
    $resu= "远程桌面开启成功"  
    } 
$resu
}  
function CTR(){
$resu=""
$ts=get-WMIObject Win32_TerminalServiceSetting -Namespace ROOT\CIMV2\TerminalServices
$r=$ts.AllowTSConnections  
    if($r -eq 0)  
    {  
   $resu= "远程桌面处于关闭状态,无需重复关闭"  
    }else{  
    $ts.SetAllowTSConnections(0) | Out-Null  
   $resu= "远程桌面关闭成功"  
    }  
$resu
}
#查看状态
function STR(){
$resu=""
$ts=get-WMIObject Win32_TerminalServiceSetting -Namespace ROOT\CIMV2\TerminalServices
$r=$ts.AllowTSConnections  
    if($r -eq 0)  
    {  
   $resu= "远程桌面处于[关闭]状态"  
    }
    if($r -eq 1)  
    {  
   $resu= "远程桌面处于[开启]状态"  
    }
$resu
}
#End查看状态
#输入控制
function CustOrderSW()  {  
$ins=read-host "输入命令"
switch($ins){
(0)
{CTR 
CustOrderSW;
break}
(1)
{
OTR 
CustOrderSW;
break
}
(2)
{
STR 
CustOrderSW;
break}
default{
"不存De命令" 
CustOrderSW;
break
}
}
}
#end输入控制
#调用自定义函数
CustOrderSW


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值