Результаты Shell Power Output - PullRequest
0 голосов
/ 12 марта 2019

название говорит само за себя. У меня есть рабочий PS-код, и я хочу, чтобы результаты выводились в текстовый файл или файл Excel.

$computers = get-content 
"C:\Users\Administrator\Desktop\David\FINAL\RamCheck\input.txt"

Perform an operation for each row in the file
foreach ($strComputer in $computers) {
$colSlots = Get-WmiObject -Class "win32_PhysicalMemoryArray" -namespace 
"root\CIMV2" -computerName $strComputer
write-host ""
$colSlots = Get-WmiObject -Class "win32_PhysicalMemoryArray" -namespace 
"root\CIMV2" -computerName $strComputer
$colRAM = Get-WmiObject -Class "win32_PhysicalMemory" -namespace 
"root\CIMV2" - 
computerName $strComputer
$NumSlots = 0


$SlotsFilled = 0
$TotMemPopulated = 0

$colRAM | ForEach {
“Memory Installed: ” + $_.DeviceLocator
“Memory Size: ” + ($_.Capacity / 1GB) + ” GB”       
$TotMemPopulated = $TotMemPopulated + ($_.Capacity / 1GB)
if ($_.Capacity = 0)
{write-host "found free slot"}



write-host ""
write-host "=== Summary Memory Slot Info for computer:" $strComputer "==="
write-host "Total Memory Populated = " $TotMemPopulated "GB"

Я пытался использовать

export-csv -append $fileOutput -Encoding utf8

Приложено изображение выхода

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Export-Csv не будет работать должным образом, потому что ваш вклад не должен быть представлен в таблице.Вы генерируете текстовую строку с форматированием, понятным только для людей.

Если вы хотите сделать его экспортируемым в виде CSV, вам придется изменить вывод таким образом, чтобы это можно было сделатьтак.Например, вы можете вывести массивы со значениями и пропустить текст.

Чтобы просто вывести текст, вы должны использовать что-то вроде Out-File.

Out-File -Encoding utf8 -InputObject $fileOutput

ВашВ целом сценарий - беспорядок, использующий неверный тип кавычек, пропущенные закрывающие скобки и так далее.Как сейчас, так и не должно работать.

0 голосов
/ 12 марта 2019

Для каждого ПК, который вы проверяете, вы можете создать объект и добавить этот объект в массив, а затем экспортировать этот массив в CSV. Существуют более старые примеры, но здесь используется более новый объект PSCustomObject, который приятно изучить, как его использовать.

#Create an array
$Array = @()

#Loop through all your computers again (or add to an existing loop)
foreach ($strComputer in $computers)
{
    $compresults = New-Object -TypeName [PSCustomObject]@{

        Computer = $strComputer
        Memory = $TotMemPopulated
        SlotsFilled = $SlotsFilled
    }

    $array += $compresults
}

#Export the array to CSV
$Array | export-csv $fileOutput -Encoding UTF8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...