回答請問一個Powershell 問題


# 待测试主机列表文件
$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

 }
}

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。