2017-06-27 3 views
0

Ich habe ein Skript, das Informationen von einem oder mehreren Servern und zeigt sie über Passieren verschiedene Funktionen zu einer Remote-Sitzung speichert (die weitgehend als Arrays zurückgegeben werden:Wrapping Ausgabe einer Spalte

$PSSession = New-PSSession -ComputerName $comp -Credential $fetchCreds -Name $server 
$buildlogsuccess = Invoke-Command -Session $pssession -ScriptBlock ${function:check-buildlog} -ArgumentList $domain 
$chocologstatus = Invoke-Command -Session $pssession -ScriptBlock ${function:check-choco} 
$KMSvalues = Invoke-Command -Session $PSSession -ScriptBlock ${Function:get-winlicense} 
$parentOU = get-ParentOU (Get-ADComputer -Server $dc -SearchBase $searchbase -Filter {name -eq $server} -Credential $fetchCreds) | select -expand parentou 
$SCCMcheck = Invoke-Command -Session $PSSession -ScriptBlock ${Function:get-sccmstatus} 
$scomcheck = Invoke-Command -Session $PSSession -ScriptBlock ${function:get-scomstatus} -argumentlist $scom 
$AV = Invoke-Command -Session $PSSession -ScriptBlock ${Function:get-avstatus} 
$wfirewall = Invoke-Command -Session $PSSession -ScriptBlock {(get-service MpsSvc).status} 
$net35 = Invoke-Command -Session $PSSession -ScriptBlock {(Get-WindowsFeature NET-Framework-Core).installed} 
$admins = Invoke-Command -Session $PSSession -ScriptBlock ${Function:check-admins} 
$DomainComms = Invoke-Command -Session $PSSession -ScriptBlock ${Function:get-domaininfo} 
$bigfix = Invoke-Command -Session $PSSession -ScriptBlock ${Function:get-bigfix} 
#clean up the remote session 
Remove-PSSession -Name $server 

[PSCustomObject]@{ 
    ServerName = $comp 
    "Physical/Virtual" = $Devicetype 
    "IP Address" = $device.IPAddresses.ipaddress 
    "Domain" = $DomainComms[4] 
    "Build Script Found, Completed" = [string]$buildlogsuccess[0] + [string]"," + [string]$buildlogsuccess[1] 
    "Choco Package Install Finished" = $chocologstatus 
    "KMS License Status, Retry" = [string]$KMSvalues[0] + [string]"," + [string]$KMSvalues[1] 
    "Parent OU" = $parentOU 
    "VM Tools Version, Status" = "$vmtoolsversion,$vmtoolsstatus" 
    "SCCM Client, Version,Last Comms" = ([string]$SCCMcheck[0] + [string]"," + [string]$SCCMcheck[1] + [string]"," + [string]$SCCMcheck[2]) 
    "SCOM Client, Conn Status" = [string]$scomcheck[0] + [string]"," + [string]$scomcheck[1] 
    "McAfee Framework Installed, Running" = [string]$AV[0] + [string]"," + [string]$AV[1] 
    "McAfee Vcan Installed, DAT Date" = [string]$AV[2] + [string]"," + [string]$AV[3] 
    "SEP Endpoint Protection Installed, Running" = [string]$AV[4] + [string]"," + [string]$AV[5] 
    "SEP Vcan Installed, DAT Date" = [string]$AV[6] + [string]"," + [string]$AV[7] 
    "BigFix Client, Version, Install Date" = [string]$bigfix[0] + [string]"," + [string]$bigfix[1] + [string]"," + [string]$bigfix[2] 
    "Windows Firewall Status" = $wfirewall 
    "Net 3.5 Installed" = $net35 
    "Connection to domain OK, Current DC, AD Site" = [string]$DomainComms[0] + "," + [string]$DomainComms[1] + "," + [string]$DomainComms[2] 
    "DelAdmin Groups in Admins" = $admins[1] 
    "Applied GPOs" = $DomainComms[3] 
} 

Ausgang (für die größte Teil) kommt wie erwartet, mit Ausnahme des letzten Feld während ok erscheint in der Liste ausgegeben und Out-GridView, nicht richtig ausgegeben, wenn Export-Csv (oder kopiert korrekt in Excel aus Out-GridView):

 
ServerName         : serverA.abc.com 
Physical/Virtual        : Virtual 
IP Address         : 10.20.30.40 
Domain          : abc.com 
Build Script Found, Completed    : Found C:\tre\w32\Logs\Installer.log,True 
Choco Package Install Finished    : False: can't find C:\ProgramData\chocolatey\logs\chocolatey.log 
KMS License Status, Retry     : True,N/A 
BigFix Client, Version, Install Date   : False,N/A,N/A                
Windows Firewall Status      : Running 
Net 3.5 Installed       : True 
Connection to domain OK, Current DC, AD Site : True,dc1.abc.com,Default-First-Site 
GG_admin_serverA in Admins     : False 
DelAdmin Groups in Admins     : abc\a-groupname-here 

Applied GPOs         : SOE Server GPO 1 
               SOE Server GPO 2 
               Some-other-policy 
               A group policy name - Infrastructure 
               SOE Server GPO 1 
               SOE Server GPO 2 
               Some-other-policy 
               A group policy name - Infrastructure 
               SOE Server GPO 1 
               SOE Server GPO 2 
               Some-other-policy 
               A group policy name - Infrastructure 

ist ein Weg, umwickeln Ausgabe eines Array-Elementes, wenn dieses Element mehrzeilige Ausgabe ist, zB für CSV, HTML etc.

Wenn ich zB von Out-GridView nach Excel oder Export-Csv kopiere, zeigt das Feld 'Angewendete GPOs' Werte an in anderen Zeilen & Spalten außerhalb wo es sollte.

+1

Bitte geben Proben von CSV Ausgabe gewünschten und tatsächlichen (wie Text, nicht Screenshots). –

+0

Geben Sie bitte wieder Beispiele der gewünschten und tatsächlichen ** CSV-Ausgabe ** an. –

Antwort

1

Ist das so einfach wie angeben, dass der Wert eine Zeichenfolge sein sollte?

"Applied GPOs" = "$($DomainComms[3])" 

Andernfalls müssen Sie das Array manipulieren, um anzugeben, welches Zeichen zwischen den einzelnen Elementen verwendet werden soll. Wie `n für neue Zeile:

"Applied GPOs" = $DomainComms[3] -join "`n"