Benutzer mit den meisten Antworten
Remote-Abfrage: Ergebnisse exportieren

Frage
-
Hallo,
habe zwei Powershell-Skripte zusammen kopiert. Teil 1 sammelt alle Computernamen aus einer spezifischen OU. Teil 2 führt eine Abfrage aller COmputer aus (und zwar welche TPM Firmware vorhanden ist).
Jetzt schaffe ich es mit meinen rudimentären Powershell Kenntnissen nicht, dass das Ergebnis in eine CSV-Datei exportiert wird. Entweder funktioniert exportcsv in diesem Skript nicht (es wird eine Datei mit 0 KB erstellt), oder ich setze den Befehl an die falsche Stelle ... ich weiß es nicht.
Wie kann ich das Ergebnis in eine einzelne Datei exportieren? Danke für Hilfe!
foreach ($COMPUTER in $(Get-ADComputer -Filter * -Searchbase 'OU=_10-Clients BL1,OU=BL1,OU=TEST,OU=Sites,DC=VL-TEST,DC=COM')) | export-csv -path d:\jge\tpm\neuertest.csv -Append -NoTypeInformation { write-host "Connecting to $($COMPUTER.Name)" Invoke-Command $COMPUTER.Name {$IfxManufacturerIdInt = 0x49465800 # 'IFX' function IsInfineonFirmwareVersionAffected ($FirmwareVersion) { $FirmwareMajor = $FirmwareVersion[0] $FirmwareMinor = $FirmwareVersion[1] switch ($FirmwareMajor) { 4 { return $FirmwareMinor -le 33 -or ($FirmwareMinor -ge 40 -and $FirmwareMinor -le 42) } 5 { return $FirmwareMinor -le 61 } 6 { return $FirmwareMinor -le 42 } 7 { return $FirmwareMinor -le 61 } 133 { return $FirmwareMinor -le 32 } default { return $False } } } function IsInfineonFirmwareVersionSusceptible ($FirmwareMajor) { switch ($FirmwareMajor) { 4 { return $True } 5 { return $True } 6 { return $True } 7 { return $True } 133 { return $True } default { return $False } } } $Tpm = Get-Tpm $ManufacturerIdInt = $Tpm.ManufacturerId $FirmwareVersion = $Tpm.ManufacturerVersion -split "\." $FirmwareVersionAtLastProvision = (Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\TPM\WMI" -Name "FirmwareVersionAtLastProvision" -ErrorAction SilentlyContinue).FirmwareVersionAtLastProvision if (!$Tpm) { Write-Host "No TPM found on this system, so the issue does not apply here." } else { if ($ManufacturerIdInt -ne $IfxManufacturerIdInt) { Write-Host "This non-Infineon TPM is not affected by the issue." } else { if ($FirmwareVersion.Length -lt 2) { Write-Error "Could not get TPM firmware version from this TPM." } else { if (IsInfineonFirmwareVersionSusceptible($FirmwareVersion[0])) { if (IsInfineonFirmwareVersionAffected($FirmwareVersion)) { Write-Host ("This Infineon firmware version {0}.{1} TPM is not safe. Please update your firmware." -f [int]$FirmwareVersion[0], [int]$FirmwareVersion[1]) } else { Write-Host ("This Infineon firmware version {0}.{1} TPM is safe." -f [int]$FirmwareVersion[0], [int]$FirmwareVersion[1]) if (!$FirmwareVersionAtLastProvision) { Write-Host ("We cannot determine what the firmware version was when the TPM was last cleared. Please clear your TPM now that the firmware is safe.") } elseif ($FirmwareVersion -ne $FirmwareVersionAtLastProvision) { Write-Host ("The firmware version when the TPM was last cleared was different from the current firmware version. Please clear your TPM now that the firmware is safe.") } } } else { Write-Host ("This Infineon firmware version {0}.{1} TPM is safe." -f [int]$FirmwareVersion[0], [int]$FirmwareVersion[1]) } } } }} }
Antworten
-
Hmmm ... Dein Code ist etwas unübersichtlich ... deshalb natürlich auch schwer zu debuggen ...
Wie wär's - wollen wir uns gemeinsam rantasten? Ich würde erstmal die nötigen Infromationen einsammeln und die Bewertung/Auswertung lokal verarbeiten. Also wäre das hier der erste Schritt:
$Searchbase = 'OU=_10-Clients BL1,OU=BL1,OU=TEST,OU=Sites,DC=VL-TEST,DC=COM' $ComputerList = Get-ADComputer -Filter * -Searchbase $SearchBase | Select-Object -Property Name foreach ($ComputerName in $ComputerList.Name) { If (Test-Connection -ComputerName $ComputerName -Count 1 -Quiet) { Invoke-Command -ComputerName $ComputerName { $TPM = Get-Tpm -ErrorAction SilentlyContinue $RegKey = (Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\TPM\WMI" -Name "FirmwareVersionAtLastProvision" -ErrorAction SilentlyContinue).FirmwareVersionAtLastProvision [PSCustomobject]@{ RegKey = $RegKey ManufacturerId = $Tpm.ManufacturerId FirmwareVersion = $Tpm.ManufacturerVersion } } } }
Schau mal bitte, ob der Schnipsel läuft, dann machen wir mit den Daten später weiter. ;-)
Best regards,
(79,108,97,102|%{[char]$_})-join''
- Bearbeitet BOfH-666 Dienstag, 14. August 2018 16:00
- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 21. August 2018 09:25
Alle Antworten
-
Hmmm ... Dein Code ist etwas unübersichtlich ... deshalb natürlich auch schwer zu debuggen ...
Wie wär's - wollen wir uns gemeinsam rantasten? Ich würde erstmal die nötigen Infromationen einsammeln und die Bewertung/Auswertung lokal verarbeiten. Also wäre das hier der erste Schritt:
$Searchbase = 'OU=_10-Clients BL1,OU=BL1,OU=TEST,OU=Sites,DC=VL-TEST,DC=COM' $ComputerList = Get-ADComputer -Filter * -Searchbase $SearchBase | Select-Object -Property Name foreach ($ComputerName in $ComputerList.Name) { If (Test-Connection -ComputerName $ComputerName -Count 1 -Quiet) { Invoke-Command -ComputerName $ComputerName { $TPM = Get-Tpm -ErrorAction SilentlyContinue $RegKey = (Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\TPM\WMI" -Name "FirmwareVersionAtLastProvision" -ErrorAction SilentlyContinue).FirmwareVersionAtLastProvision [PSCustomobject]@{ RegKey = $RegKey ManufacturerId = $Tpm.ManufacturerId FirmwareVersion = $Tpm.ManufacturerVersion } } } }
Schau mal bitte, ob der Schnipsel läuft, dann machen wir mit den Daten später weiter. ;-)
Best regards,
(79,108,97,102|%{[char]$_})-join''
- Bearbeitet BOfH-666 Dienstag, 14. August 2018 16:00
- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 21. August 2018 09:25