Hallo Skripter,
in einem Skript zur Inventarisierung von dem PC und den angeschlossenen Monitoren gibt es Probleme bei dem Versand der Ergebnisse per E-Mail.
Die Monitordaten werden in einem Array gespeichert, da möglicherweise mehrere angeschlossen werden können. Habe dann versucht diese Array auch im E-Mailbody zu schreiben aber es kommt nur die erste Seriennummer vor und der Rest bleibt leer.
Wenn diese Arrays auf der Console ausgegeben werden funktioniert es ohne Probleme und alles wird so angezeigt wie es sollte.
Habe dann versucht die Arrays in Strings umzuwandeln und diese anzuzeigen, aber es ändert nichts am Ergebnis.
#########################################
###Inventarisierung für Win 10 Rechner###
#########################################
# Informationen über den Computer auslesen #
############################################
#Auslesen der Mac-Addresse
[String] $MacAddress_Computer = (Get-NetAdapter).MacAddress
#Auslesen des Computernamens
[String] $Name_Computer = $env:COMPUTERNAME
$ComputerInfo = (Get-ComputerInfo)
#Auslesen des Prozessors
[String] $Prozessor_Computer = ($ComputerInfo).CsProcessors.Name
#Auslesen des Herstellers
[String] $Hersteller_Computer = ($ComputerInfo).CsManufacturer
#Auslesen des Models
[String] $Model_Computer = ($ComputerInfo).CsModel
#Auslesen des Betriebssystems
[String] $Betriebssystem_Computer = ($ComputerInfo).OsName
#Auslesen der Seriennummer
[String] $Seriennummer_Computer = Get-WmiObject -Class Win32_BIOS -ComputerName $Name_Computer
# Informationen über die angeschlossenen Monitore auslesen #
#############################################################
#Auslesen der Seriennummer(n)
[array] $Seriennummer_Monitor = Get-WmiObject WmiMonitorId -Namespace root\wmi|ForEach-Object{($_.SerialnumberID|ForEach-Object{[char]$_}) -join ""}
#Auslesen der Product ID(s)
[array] $ProduktID_Monitor = Get-WmiObject WmiMonitorId -ComputerName $Name_Computer -Namespace root\wmi|ForEach-Object{($_.ProductCodeID|ForEach-Object{[char]$_}) -join ""}
#Auslesen des Herstellers
[array] $Hersteller_Monitor = Get-WmiObject WmiMonitorId -ComputerName $Name_Computer -Namespace root\wmi|ForEach-Object{($_.ManufacturerName|ForEach-Object{[char]$_}) -join ""}
#Auslesen des Produktionsjahres
[array] $Produktionsjahr_Monitor = (Get-WmiObject WmiMonitorId -ComputerName $Name_Computer -Namespace root\wmi).YearOfManufacture
#Auslesen des Angeschlossenen Computers
[array] $Computername_Monitor = (Get-WmiObject WmiMonitorId -ComputerName $Name_Computer -Namespace root\wmi).PSComputerName
#Auslesen der Anzahl an Monitoren
[int16] $anzahl = $Seriennummer_Monitor.Count
#Ergebnise aufbereiten für den E-Mailversand
[String] $SN_M0 = ($Seriennummer_Monitor[0]).ToString()
[String] $PN_M0=($ProduktID_Monitor[0]).ToString()
[String] $H_M0=($Hersteller_Monitor[0]).ToString()
[String] $Pj_M0=($Produktionsjahr_Monitor[0]).ToString()
[String] $Cn_M0=($Computername_Monitor[0]).ToString()
[String] $SN_M1=($Seriennummer_Monitor[1]).ToString()
[String] $PN_M1=($ProduktID_Monitor[1]).ToString()
[String] $H_M1=($Hersteller_Monitor[1]).ToString()
[String] $Pj_M1=($Produktionsjahr_Monitor[1]).ToString()
[String] $Cn_M1=($Computername_Monitor[1]).ToString()
#Emailversand
$PSEmailServer = "******"
Send-MailMessage -to "test@test.de" -from "Powershell <Test@test.de>" -Subject "Inventarisierung" -Encoding UTF8 -Body "
PC:
MAC-Addresse: $MacAddress_Computer
Hostname: $Name_Computer
Prozessor: $Prozessor_Computer
Hersteller: $Hersteller_Computer
Model: $Model_Computer
OS: $Betriebssystem_Computer
Monitore angeschlossen: $anzahl Stk.
Seriennummer: 1. $SN_M0
2. $SN_M1
Produktnummer: 1. $PN_M0
2. $PN_M1
Hersteller: 1. $H_M0
2. $H_M1
Produktionsjahr: 1. $Pj_M0
2. $Pj_M1
Hostname des angeschlossenen PCs: 1. $Cn_M0
2. $Cn_M1
" Der E-Mailtext sieht wie folgt aus:
"
PC:
MAC-Adresse: MAC-Adresse
Hostname: Host
Prozessor: Prozessor
Hersteller: Hersteller
Model: Model
OS: OS
Monitor(e):
Seriennummer: 1. Seriennummer
"
Mit freundlichen Grüßen
Dominik Hartl