![如何获取您无权访问的远程 Windows 服务器的上次启动时间?](https://linux22.com/image/727524/%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%E6%82%A8%E6%97%A0%E6%9D%83%E8%AE%BF%E9%97%AE%E7%9A%84%E8%BF%9C%E7%A8%8B%20Windows%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E4%B8%8A%E6%AC%A1%E5%90%AF%E5%8A%A8%E6%97%B6%E9%97%B4%EF%BC%9F.png)
如果您没有被授予访问该服务器的权限,是否可以获取远程计算机(运行 Windows)的 LastBootUpTime;尽管服务器与客户端位于同一网络和同一域中?
即使您没有被授予访问机器的权限,也可以获得该机器的权限列表(例如下面的 powershell),所以我希望怀疑可能存在某种方法可以在正常运行时间获取类似的数据并不是完全愚蠢的...特别是如果在启动后计算机更新某些 AD 属性,例如 LastLogonTimestamp 或类似属性?
([adsi]'WinNT://myServerName/Administrators, group').psbase.Invoke("members") `
| %{$_.GetType.Invoke().InvokeMember("Name",'GetProperty', $null, $_, $null)}
我还编写了代码(PowerShell 和 C#)来检索服务器的上次启动时间,其中当前用户在远程计算机上拥有权限。
$arrayOfServers | Get-CimInstance Win32_OperatingSystem | select csname, lastbootuptime
有关更多示例,请参阅我对相关问题的解决方案: https://stackoverflow.com/questions/22965686/how-to-get-last-boot-time-of-a-remote-system-in-c-sharp-or-vb-with-a-non-admin-u/52478378#52478378
答案1
不,但是您可以为非管理员用户启用 WMI 来限制授予的权限,但这意味着管理员需要启用该用户。
允许用户访问特定的 WMI 命名空间
您可以通过在命名空间的 WMI 控制中设置“远程启用”权限来允许或禁止用户访问特定的 WMI 命名空间。如果用户尝试连接到他们无权访问的命名空间,他们将收到错误 0x80041003。默认情况下,此权限仅对管理员启用。管理员可以为非管理员用户启用对特定 WMI 命名空间的远程访问。
以下步骤为非管理员用户设置远程启用权限。
设置远程启用权限
使用 WMI 控制连接到远程计算机。
有关 WMI 控件的更多信息,请参阅使用 WMI 控件设置命名空间安全性。
在“安全”选项卡中,选择命名空间并单击“安全”。
找到适当的帐户并在权限列表中选中远程启用。
关于该主题的更多信息这里
设置完成后,您可以启动WMI查询,如下所示;
在命令提示符中;
wmic /node:"<computer>" OS get LastBootUpTime
在 powershell 中;
Get-WmiObject Win32_OperatingSystem -ComputerName <computer> | fl LastBootUpTime