pixel0815
Goto Top

Zeichen verketten in Powershell mit Bedingung

Hallo zusammen,

ich habe eine Frage zur Verbindung von einzelnen Bausteinen eines Arrays.
Aus einer CSV Datei wird folgende Zeilen ausgelesen (Beispielhaft):

Microsoft Windows Server 2012 R2 Datacenter
Microsoft Windows Server 2016 Standard


Die Zeile lasse ich mit $OS = $MS.Operating System' -split " " zerlegen.
Jetzt kann ich ja ne nachdem ein paar Variablen füllen und später das ganze so zusammensetzen wie ich es gerne möchte.
$Details.Produkthersteller = $OS
$Details.Produktname = $OS[1] + " " + $OS[2]  
$Details.Edition = $OS[5]
$Details.Version = $OS[3] + " " + $OS[4]  
Bei einem Wert von Microsoft Windows Server 2012 R2 Datacenter sieht das ganze so aus
Host              : 122
DNSName           : MaschineXAZ
CPUs              : 2
OS                : Microsoft Windows Server 2012 R2 Datacenter
Produkthersteller : Microsoft
Produktname       : Windows Server
Edition           : Standard
Version           : 2012 R2
Bei einem 2016er oder 2019er Server sieht das dann so aus

Host              : 12345
DNSName           : server4
CPUs              : 2
OS                : Microsoft Windows Server 2019 Standard
Produkthersteller : Microsoft
Produktname       : Windows Server
Edition           : 
Version           : 2019 Standard
Kann man das eleganter Lösen?

Der Skriptteil sieht so aus
foreach($MS in $MSExport){

$Details = "" | select Host, DNSName, CPUs, OS , Produkthersteller, Produktname, Edition, Version  
$OS = $MS.'Operating System' -split " "  

$Details.Host = $MS.Host
$Details.DNSName = $MS.DNSName
$Details.CPUs = $MS.CPUs
$Details.OS = $MS.'Operating System'  
$Details.Produkthersteller = $OS
$Details.Produktname = $OS[1] + " " + $OS[2]  
$Details.Edition = $OS[5]
$Details.Version = $OS[3] + " " + $OS[4]  

$Report += $Details
}

Ich freu mich auf eine kleine Hilfestellung.
LG

Content-ID: 5229117200

Url: https://administrator.de/forum/zeichen-verketten-in-powershell-mit-bedingung-5229117200.html

Ausgedruckt am: 22.12.2024 um 12:12 Uhr

pixel0815
pixel0815 06.01.2023 um 13:32:21 Uhr
Goto Top
Ich hab das jetzt erstmal in mit if else gelöst.

if ($OS -contains '2016' -or $OS -contains '2019')  
{
    $Details.Edition = $OS[4]
    $Details.Produkthersteller = $OS
    $Details.Produktname = $OS[1] + " " + $OS[2]  
    $Details.Version = $OS[3]
}
else
{
    $Details.Produkthersteller = $OS
    $Details.Produktname = $OS[1] + " " + $OS[2]  
    $Details.Edition = $OS[5]
    $Details.Version = $OS[3] + " " + $OS[4]  

}