如何获取远程计算机的时间

原创 2007年09月25日 11:22:00

作者: Edengundam(马涛)

获得本地计算机时间很容易, 使用cmdlet: Get-Date即可.

PS C:> Get-Date

2007年9月25日 
10:44:12

但是, 如果您想获得远程计算上的时间恐怕就没有这么容易了. 幸亏PowerShell无缝集成了WMI, 因此, 我们可以通过WMI来进行尝试.
注意到WMI中的类win32_localtime可以获得计算机上的时间, 我们先在本地计算机上实验一把:

PS C:> Get-WmiObject -Class win32_localtime


__GENUS          
: 2
__CLASS          
: Win32_LocalTime
__SUPERCLASS     
: Win32_CurrentTime
__DYNASTY        
: Win32_CurrentTime
__RELPATH        
: Win32_LocalTime=@
__PROPERTY_COUNT 
: 10
__DERIVATION     
: {Win32_CurrentTime}
__SERVER         
: COMPUTER-NAME
__NAMESPACE      
: rootcimv2
__PATH           
: /COMPUTER-NAMErootcimv2:Win32_LocalTime=@
Day              
: 25
DayOfWeek        
: 2
Hour             
: 10
Milliseconds     
:
Minute           
: 50
Month            
: 9
Quarter          
: 3
Second           
: 39
WeekInMonth      
: 5
Year             
: 2007

这是我本地计算机上的时间信息, 可是这些时间信息被独立存储在不同的属性中. 我们只好利用PowerShell的格式化命令把这些信息重新组织成我们期望的样式:

PS C:> $dt = Get-WmiObject -Class win32_localtime
PS C
:> "{0:00}/{1:00}/{2} {3:00}:{4:00}:{5:00}" -$dt.month,$dt.day,$dt.year,$dt.hour,$dt.minute,$dt.second
09/25/2007 10:54:21

我们这次使用PowerShell中的格式运算符-f, 这个运算符其实就是.Net类库中的String中的Format方法.
{0:00}中第一个"0"表示参数中的索引, 而冒号后面的两个"0"表示对数值的格式化.
这个代码有些长, 让人感觉很冗余, 还有更好的办法吗??让我们试试利用DateTime数据类型的构造函数来试试:

PS C:> New-Object DateTime $dt.year,$dt.month,$dt.day,$dt.hour,$dt.minute,$dt.second

2007年9月25日 
10:54:21

DateTime的构造函数中, 输入六个参数, 分别表示年月日, 时分秒.  现在我们来看看如何请求远程计算机上的时间. 我们先来观察下Get-WmiObject有哪些参数能够帮助我们完成任务.
Get-Help -Full Get-WmiObject命令可以查看命令的详细帮助信息. 我们可以用Get-Credential来输入用户登录的帐户和密码. 例如:

PS C:> $cred = Get-Credential Administrator
PS C
:>

执行此命令后, 你会看到提示输入密码的窗口弹出. 将这个命令返回的对象保存到变量$cred中. 接下来, 我们就要访问远程计算机了:

PS C:> $dt = Get-WmiObject -Class win32_localtime -ComputerName test-server -Credential $cred
PS C
:> $dt

__GENUS          
: 2
__CLASS          
: Win32_LocalTime
__SUPERCLASS     
: Win32_CurrentTime
__DYNASTY        
: Win32_CurrentTime
__RELPATH        
: Win32_LocalTime=@
__PROPERTY_COUNT 
: 10
__DERIVATION     
: {Win32_CurrentTime}
__SERVER         
: TEST-SERVER
__NAMESPACE      
: rootcimv2
__PATH           
: /TEST-SERVERrootcimv2:Win32_LocalTime=@
Day              
: 25
DayOfWeek        
: 2
Hour             
: 11
Milliseconds     
:
Minute           
: 9
Month            
: 9
Quarter          
: 3
Second           
: 9
WeekInMonth      
: 5
Year             
: 2007

PS C
:> New-Object DateTime $dt.year,$dt.month,$dt.day,$dt.hour,$dt.minute,$dt.second

2007年9月25日 
11:09:09

cmdlet Get-WmiObject中的形参: -ComputerName用于指定计算机名称或IP地址. -Credential参数指定了之前的登录信息, 此处我们使用了变量$cred.
最后要说一下, WMI中包括了很多的类, 包含了各种操作系统信息, 但是不同版本的操作系统之间支持的类是不同. 一般来说越靠后的版本支持的越多, 不过, 如果该版本操作系统不支持该类, 你会收到必要的错误信息.
 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

远程计算机ip地址获取器

  • 2011-01-04 11:18
  • 3.12MB
  • 下载

获取远程计算机桌面信息

  • 2015-01-18 07:38
  • 4.20MB
  • 下载

"远程计算机需要网络级别身份验证,你的系统不支持"的解决办法

前提:1安装“远程桌面连接工具”升级到6.1版。          2.Windows 版本升级到:XP SP3。   本文介绍如何通过修改注册表为Windows XP SP3增加网络身份验证...

远程计算机需要网络级别身份验证,你的系统不支持

远程计算机需要网络级别身份验证,你的系统不支持 故障:“远程计算机需要网络级别身份验证,而您的计算机不支持该验证,请联系您的系统管理员或者 技术人员来获得帮助” 故障症状:当您使用W...

远程计算机需要网络级别身份验证

最近在11教物电这边上实验课,很想远程楼上机房的电脑,从前连不上也就算了,今天突然就特别想连上,但是还是有问题,充分说明这不是我电脑的问题,是实验室机房电脑的问题,于是带着试试的心态寻找解决办法。结果...

WMI_远程计算机配置

1 用户设置。     WMI远程访问需要使用一个具有管理员权限的用户,并且用户必须有密码。如果用已经建好的用户可以直接从 1.2配置用户 开始。     1.1新建一个用户      &#...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)