Powershell Прочитать текстовый файл и извлечь 2 значения ComputerName & ProductName - PullRequest
0 голосов
/ 20 февраля 2020

Я читаю текстовый файл, который содержит много информации. Мне нужно извлечь только 2 значения: 1- ComputerName & ProductName. Я написал приведенный ниже скрипт, и конечный результат составляет 2 заголовка, а остальное пустое.

SystemName=ABC123 (This is the ComputerName)
ProductName=USB Audio Device



$FileName0 = "C:\DATA\AUDIT\DRAGON\DRAGON.TXT"
foreach ($computer in (Get-Content C:\DATA\AUDIT\DRAGON\COMPUTERS11.TXT)) {
wmic path CIM_LogicalDevice where "Description like 'USB%'" get /value  | Out-File "C:\DATA\AUDIT\DRAGON\DRAGON.TXT"}
Get-content $FileName0 | Select-Object $computer, ProductName | Out-File C:\DATA\AUDIT\DRAGON\DRAGON-USB.TXT

1 Ответ

0 голосов
/ 20 февраля 2020
  1. Чтение в вашем списке компьютеров
  2. Запустите скрипт на каждом компьютере с помощью Get-WmiObject
  3. Скомпилируйте нужные данные.
$hash = @{}

foreach($server in Get-Content computers.txt) {
    $result = (Get-WmiObject CIM_LogicalDevice -Filter "Description like 'USB%'" -ComputerName $server | select Name).Name
    $hash[$server] = $result
}

# At this point, your hashtable has a list of all servers with all the products that have description starting with USB.

#Convert to Json and save it to file.
$hash | ConvertTo-Json | Out-File test.txt

# And to convert it to csv, use the following with GetEnumerator.
$hash.GetEnumerator() | Select-Object -Property @{N='Property';E={$_.Key}}, @{N='PropValue';E={$_.Value -Join "|"}}  | Export-Csv test.csv

...