Powershell管理系列(三十六)PowerShell操作之统计域内计算机硬件资产

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Powershell管理系列(三十六)PowerShell操作之统计域内计算机硬件资产相关的知识,希望对你有一定的参考价值。

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750

客户端需设置防火墙,[注意要先设置管理模版防火墙设置,否则将会覆盖默认组策略的高级防火墙安全设置]

1、允许远程管理,设置如下,启用windows防火墙:允许入站管理程序

参考链接:http://908174.blog.51cto.com/898174/1175525

技术分享

技术分享

2、 允许远程桌面

技术分享

技术分享

3、允许ping,打开组策略,高级安全防火墙设置,入站规则

技术分享

4、选择ICMPv4和ICMPv6

技术分享

5、点击下一步完成

技术分享

6、允许Powershell远程管理

具体设置参考链接:

http://yuntcloud.blog.51cto.com/1173839/1790701

脚本如下:

#统计ip、计算机名、用户、计算机配置、主机序列号、硬盘序列号、计算机型号、windows的版本   
#防火墙开启windows远程管理、windows防火墙允许入站远程管理    
Import-Module activedirectory                                                   
#导入其中的AD 模块    
$computeraccount=Get-ADComputer -Filter * -Properties * |?{$_.OperatingSystem -ne $null -and $_.enabled -and (Test-NetConnection $_.name|select -ExpandProperty PingSucceeded)} `    
|select -ExpandProperty name         
#获取当前AD 计算机中的所有机器NETBios名称,排除禁用的,无操作系统类型、没有开机的    
[email protected]()                                                            
#定义所有计算机的初始空值    
foreach ($currentcomputename in $computeraccount)                               
#根据计算机对象进行轮询    
      {    
        $currentname= Get-ADComputer -Identity $currentcomputename|select -ExpandProperty name         
        #获取机器的NETBIOS名称       
        $currentoperatingsystem= Get-ADComputer -Identity $currentcomputename -Properties * |select -ExpandProperty OperatingSystem          
        #获取机器的操作系统版本                             
        $currentclass= Get-WmiObject -class Win32_BIOS -computername $currentcomputename -namespace "root\cimv2" |select -ExpandProperty SerialNumber        
        #通过获取WMI中的bios 类获取到机器相应的序列号,存放在BIOS的SN    
        $currentIP= Get-WmiObject -class Win32_NetworkAdapterConfiguration -computername $currentcomputename -Filter IPEnabled=true |select -ExpandProperty IPAddress -First 1 `    
        |?{$_ -notlike "*:*" -and $_ -notlike "169*"}   
        #通过获取WMI中的IPV4地址      
        $currentdiskSN=  Get-WmiObject -Class Win32_DiskDrive -computername $currentcomputename |select -First 1 -ExpandProperty Model        
        #通过获取WMI中的硬盘BIOS序列号    
        $currentpcmodel=  Get-WmiObject -Class Win32_ComputerSystem -computername $currentcomputename -Property * |select -ExpandProperty Model        
        #通过获取WMI中的计算机类型       
        $currentmemory=  (Get-WmiObject -Class Win32_ComputerSystem -computername $currentcomputename -Property * |select -ExpandProperty TotalPhysicalMemory)/1gb -as [int]       
        #通过获取WMI中的计算机内存   
        $currentharddisk=  (Get-WmiObject -Class Win32_DiskDrive -computername $currentcomputename|select -First 1 -ExpandProperty size)/1gb  -as [int]      
        #通过获取WMI中的硬盘大小                  
        $computerproperty=New-Object  psobject                                                                                                               
        #定义一个新PS 对象    
        $computerproperty|  Add-Member -MemberType NoteProperty -Name "计算机名" -Value  $currentname                                                        
        #为新的对象定义计算机名称属性    
        $computerproperty|  Add-Member -MemberType NoteProperty -Name "主机序列号" -Value $currentclass                                                          
        #为计算机对象定义序列号属性   
        $computerproperty|  Add-Member -MemberType NoteProperty -Name "IP地址" -Value $currentip                                                          
        #为计算机对象定义序列号属性  
        $computerproperty|  Add-Member -MemberType NoteProperty -Name "硬盘序列号" -Value $currentdisksn                                                          
        #为计算机对象定义硬盘序列号属性  
        $computerproperty|  Add-Member -MemberType NoteProperty -Name "操作系统版本" -Value $currentoperatingsystem                                                          
        #为计算机对象定义操作系统版本   
        $computerproperty|  Add-Member -MemberType NoteProperty -Name "计算机类型" -Value $currentpcmodel                                                          
        #为计算机对象定义计算机类型     
        $computerproperty|  Add-Member -MemberType NoteProperty -Name "计算机内存大小(GB)" -Value $currentmemory                                                         
        #为计算机对象定义计算机内存属性                                                               
        $computerproperty|  Add-Member -MemberType NoteProperty -Name "计算机硬盘大小(GB)" -Value $currentharddisk                                                         
        #为计算机对象定义计算机硬盘属性                                                               
        $allcomputername=$allcomputername+$computerproperty                                                                                                  
        #根据对象的轮询将当前对象的属性加入到哈希数组中             
      }              
        $tmplogfile="c:"+"\"+$(get-date -Format "yyyy-MM-dd")+".csv"                                                                                         
        #定义输出文件的路径和文件格式    
        $allcomputername| Export-Csv -Encoding default -NoTypeInformation -Path $tmplogfile                                                                  
        #将数据导出为csv 文件,我们直接通过CSV 文件来获取希望拿到的信息        
        $UserName = "[email protected]"      #定义发送账户名称    
        $Password = ConvertTo-SecureString "123456" -AsPlainText –Force    
        $cred = New-Object System.Management.Automation.PSCredential($UserName,$Password)     
        Send-MailMessage -From "[email protected]" -To "[email protected]" -Subject "计算机硬件信息汇总" -Credential $cred -SmtpServer "mail.yuntcloud.com" -Attachments $tmplogfile     
        `-Encoding ([System.Text.Encoding]::UTF8)


本文出自 “周平的微软技术交流平台” 博客,请务必保留此出处http://yuntcloud.blog.51cto.com/1173839/1872504

以上是关于Powershell管理系列(三十六)PowerShell操作之统计域内计算机硬件资产的主要内容,如果未能解决你的问题,请参考以下文章

Powershell管理系列(三十六)PowerShell操作之统计域内计算机硬件资产

Powershell管理系列(三十六)PowerShell操作之统计域内计算机硬件资产

Powershell管理系列(三十六)PowerShell操作之统计域内计算机硬件资产

Powershell管理系列(三十二)PowerShell操作之开启终端Powershell远程管理

Powershell管理系列(三十)PowerShell操作之统计邮箱的用户信息

Powershell管理系列(三十五)PowerShell操作之以管理员权限运行脚本