# 待测试主机列表文件
$srvlist = “D:\serverlist.txt”
# 无响应主机列表文件
$failedServerList = “D:\failedServer.txt”
# 扫描结果文件
$resultFile = "D:\result.txt"
foreach($server in Get-Content$srvlist)
{
#确保机器名前后没有空格
$server=$server.Trim()
if([string]::IsNullOrEmpty($server)){
#遇到空行跳过,检查下一个
continue
}
# Ping 主机
if(Test-Connection $server -Count 1 -Quiet) {
# 上次开机时间
$LastBootUpTime = Get-WmiObject -class Win32_OperatingSystem | foreach {
$_.ConvertToDateTime($_.LastBootUpTme)}
#注意:如果你当前用户没有远程机器的权限,可能需要你提供用户名和密码,使用Get-WmiObject -Credential参数
# 上次更新扫描时间
$LastWinUpdateDetect
# 上次更新安装时间
$LastWinUpdateInstall
# 注意:你扫描注册表的脚本本身没有问题,关键是让它要在远程机器上运行。
[microsoft.win32.registrykey]::OpenRemoteBaseKey
# 具体请参考:https://msdn.microsoft.com/en-us/library/8zha3xws(v=vs.110).aspx
# 保存数据
"$server $LastWinUpdateDetect $LastWinUpdateInstall $LastBootUpTime" | Out-File $resultFile -Append
}
else{
# Ping 不通
"$server Ping不通。" | Out-File $failedServerList -Append
}
}