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

原创 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中包括了很多的类, 包含了各种操作系统信息, 但是不同版本的操作系统之间支持的类是不同. 一般来说越靠后的版本支持的越多, 不过, 如果该版本操作系统不支持该类, 你会收到必要的错误信息.
 

提取计算机当前时间、日期

今日内容: 1. 根据键盘输入的身份证号计算相应的年龄,并显示系统的当前日期和时间 /*根据键盘输入的身份证号计算相应的年龄,并显示系统的当前日期和时间*/ #include #include #...
  • qq_36143023
  • qq_36143023
  • 2016年10月16日 22:46
  • 507

基于计算机时钟晶振的高精度时间的获取

有时候我们需要计算某次仿真的运行时间,以来计算时效比,也就是说实际中1秒钟的时间我们的仿真要消耗多少实际时间,这就需要我们在程序运行前,获取一次系统时间,程序运行后,获取一次系统时间,两次相减,就是用...
  • niusiqiang
  • niusiqiang
  • 2015年01月22日 21:31
  • 432

Windows系统日志配置远程Syslog采集

Windows系统没有自带的功能支持系统日志进行syslog发送,因此需要依赖第三方工具。这里我们推荐一款非常好用的轻量级日志采集模块:Nxlog,在Windows下部署和配置均十分便捷。 本文将指...
  • leizi191110211
  • leizi191110211
  • 2016年06月06日 10:32
  • 5684

黑客们是如何查看远程电脑win7系统进程?

想知道黑客们是如何查看远程电脑win7系统进程的吗?方法很简单,黑客可以通过很多命令获得远程电脑的进程列表,进而能够判断出自己植入的木马等程序是否在运行……   在“命令提示符”窗口中输人如下类...
  • zero_295813128
  • zero_295813128
  • 2016年06月12日 10:30
  • 633

访问被拒绝,必须是该远程计算机的管理员才能使用此命令。请将您的用户名添加到该远程计算机的管理员本地组或者域管理员全局组中

Windows7系统在执行IISRESET时,抛错,错误信息如下: Windows7系统在执行IISRESET时,抛错“访问被拒绝,必须是该远程计算机的管理员才能使用此命令。请将您的用户名添加到该远...
  • xunzaosiyecao
  • xunzaosiyecao
  • 2014年05月20日 17:19
  • 3932

解决"远程计算机已结束连接"的办法

解决"远程计算机已结束连接"的办法
  • tigerzx
  • tigerzx
  • 2017年03月06日 12:49
  • 1054

Win7系统查看最后登录时间的方法 win7电脑记录用户登录时间的查看

Win7系统查看最后登录时间的方法 win7电脑记录用户登录时间的查看 我们在使用电脑的时候,总是会遇到很多的电脑难题。当我们在遇到了需要在win7系统的电脑中查看系统的最后登录时间,那么我们应该怎么...
  • qq_26926889
  • qq_26926889
  • 2017年07月29日 15:09
  • 739

Windows登录日志详解

日志在很多时候是非常重要的,尤其是登录日志。从登录日志中可以发现很多有价值的信息,window2008及以后的日志基本一致,2003由于时间太长,微软都停止更新了,所以重点介绍2008的登录日志。...
  • zhulinu
  • zhulinu
  • 2016年10月07日 09:21
  • 12331

远程连接提示:两台计算机无法在分配的时间内连接解决方法

转自 http://www.cr173.com/html/53002_1.html 最近西西在使用远程桌面连接的时候发生了连接失败的问题,每次连接都会弹出“两台计算机无法在分配的时间内连接”...
  • u010820135
  • u010820135
  • 2016年06月20日 14:28
  • 2615

telnet与远程登录

远程登陆是指用户使用Telnet命令,使自己的计算机暂时成为远程主机的一个仿真终端的过程。仿真终端等效于一个非智能的机器,它只负责把用户输入的每个字符传递给主机,再将主机输出的每个信息回显在屏幕上。 ...
  • SDDCCCC
  • SDDCCCC
  • 2013年10月29日 22:10
  • 2680
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何获取远程计算机的时间
举报原因:
原因补充:

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