检索计算机名称和reg值,然后导出到csv

时间:2019-04-24 20:37:22

标签: powershell

我创建了一个PowerShell脚本来检索以下内容;

  1. RegKey值“ Servername
  2. 注册表键值“ ServerListName
  3. 注册表键值“ Version
  4. Wmi对象“ Computername

我想对计算机列表运行此命令,并将值导出到csv文件或附加源csv文件。

我可以将信息显示在屏幕上,但是很难为每个返回的结果导出和添加标题。

Clear-Host
$computers = Get-Content C:\Tanium.csv

foreach ($computer in $computers)
{ 

$RegKey ="Software\WOW6432Node\Tanium\Tanium Client"
 Cd hklm:\$RegKey 

Get-WMIObject Win32_ComputerSystem | Select-Object -ExpandProperty name 
Get-ItemPropertyValue -Path. -Name ServerName
Get-ItemPropertyValue -Path. -Name ServerNameList
Get-ItemPropertyValue -Path. -Name Version
}

如果可能,我想导出或追加现有的显示数据的csv文件;

ComputerName:      123455
Version:           7.098
ServerName:        1233456454
ServerNameList:    1233456454

1 个答案:

答案 0 :(得分:0)

假定在所有目标计算机上都设置了PowerShell远程处理:

$computers = Get-Content C:\Tanium.csv

Invoke-Command -Computer $computers { 
  $regKey = "HKLM:\Software\WOW6432Node\Tanium\Tanium Client"
  $regKeyValues = Get-ItemProperty -LiteralPath $regKey
  [pscustomobject] @{
    ComputerName = (Get-CimInstance Cim_ComputerSystem).Name
    Version = $regKeyValues.Version
    ServerName = $regKeyValues.ServerName
    ServerNameList = $regKeyValues. ServerNameList
  }
} | Export-Csv -Append -NoTypeInformation -Encoding Utf8 -LiteralPath out.csv

注意:

  • 鉴于CIM取代了PSv3 +中的WMI,因此我已经从WMI切换到CIM cmdlet。

  • 自定义对象的输出顺序不一定反映计算机名称($computers)的输入顺序。