none
Arrayerzeugung sorgt für fehlende Informationen RRS feed

  • Allgemeine Diskussion

  • Ein Array wird erzeugt. Jedoch fehlen Informationen in jeder Zeile. Lösche ich die Arrayerzeugung aus dem Script, werden zwar alle Informationen einer Zeile korrekt angezeigt, er bricht aber nach der ersten Zeile ab (logischerweise).
    Donnerstag, 22. Juni 2017 08:11

Alle Antworten

  • Wie wäre es mit dem Code?
    So kann man leider nicht prüfen, was du ggf. falsch machst.
    Donnerstag, 22. Juni 2017 08:16
  • Naja, der Code besteht aus 4 kompletten Scripts. Was brauchst du? Wie gesagt....

    $reports = @()

    Wenn diese Zeile dasteht, fehlen Informationen, wenn sie fehlt, besteht der Report nur aus einer Zeile.

    Donnerstag, 22. Juni 2017 08:24
  • #Parameter in Variablen umwandeln
    param(
    	[Parameter(ParameterSetName='database')] [string]$database,
    	[Parameter(ParameterSetName='file')] [string]$file,
    	[Parameter(ParameterSetName='server')] [string]$server,
    	[Parameter(ParameterSetName='mailbox')] [string]$mailbox,
    	[Parameter(ParameterSetName='all')] [switch]$all,
    	[string]$filename
    )
    
    $report = @()
    
    #Passenden Server zuweisen
    		Set-ADServerSettings -PreferredServer srvads02.master.dns
    		Set-ADServerSettings -RecipientViewRoot master.dns
    
    Write-Host -ForegroundColor White "Collecting mailbox list"
    
    if($all) { $mailboxes = @(Get-Mailbox -resultsize unlimited -IgnoreDefaultScope) }
    if($server) { $mailboxes = @(Get-Mailbox -server $server -resultsize unlimited -IgnoreDefaultScope) }
    if($database){ $mailboxes = @(Get-Mailbox -database $database -resultsize unlimited -IgnoreDefaultScope) }
    if($file) {	$mailboxes = @(Get-Content $file | Get-Mailbox -resultsize unlimited) }
    if($mailbox) { $mailboxes = @(Get-Mailbox $mailbox) }
    
    #Daten auslesen 
    Write-Host -ForegroundColor White "Collecting report data"
    
    $mailboxcount = $mailboxes.count
    $i = 0
    $mailboxdatabases = @(Get-MailboxDatabase)
    
    #Schleife ausführen für jedes Postfach (Dateien auslesen)
    foreach ($mb in $mailboxes)
    {
    	$i = $i + 1
    	$pct = $i/$mailboxcount * 100
    	Write-Progress -Activity "Collecting mailbox details" -Status "Processing mailbox $i of $mailboxcount - $mb" -PercentComplete $pct
    
    	$stats = $mb | Get-MailboxStatistics | Select-Object TotalItemSize,TotalDeletedItemSize,ItemCount,LastLogonTime,LastLoggedOnUserAccount
        
        if ($mb.ArchiveDatabase)
        {
            $archivestats = $mb | Get-MailboxStatistics -Archive | Select-Object TotalItemSize,TotalDeletedItemSize,ItemCount
        }
        else
        {
            $archivestats = "n/a"
        }
    
        $inboxstats = Get-MailboxFolderStatistics $mb -FolderScope Inbox | Where {$_.FolderPath -eq "/Inbox"}
        $sentitemsstats = Get-MailboxFolderStatistics $mb -FolderScope SentItems | Where {$_.FolderPath -eq "/Sent Items"}
        $deleteditemsstats = Get-MailboxFolderStatistics $mb -FolderScope DeletedItems | Where {$_.FolderPath -eq "/Deleted Items"}
        $lastlogon = $stats.LastLogonTime
    
    	$user = Get-User $mb
    	$aduser = Get-ADUser $mb.samaccountname -Properties Enabled,AccountExpirationDate
    
    	#Daten einem PS-Objekt zuordnen	
    	$userObj = New-Object PSObject
    	$userObj | Add-Member NoteProperty -Name "Company" -Value $user.Company
        $userObj | Add-Member NoteProperty -Name "Office" -Value $user.Office
    	$userObj | Add-Member NoteProperty -Name "DisplayName" -Value $mb.DisplayName
    	$userObj | Add-Member NoteProperty -Name "Total Mailbox Size (Mb)" -Value ($stats.TotalItemSize.Value.ToMB() + $stats.TotalDeletedItemSize.Value.ToMB())
    
    	$report = $report += $userObj
    }
    $report = $report|Sort Office,DisplayName
    $reportcount = $report.count
    $billdate = Get-Date -UFormat %Y%m%d
    
    if ($reportcount -eq 0)
    {
    	Write-Host -ForegroundColor Yellow "No mailboxes were found matching that criteria."
    }
    else
    {
    	#Report ausgeben
    	if ($mailbox) 
    	{
    		$report | Format-List
    	}
    	else
    	{
    		$report | Out-File \\Dateipfad\Exchange\$filename.txt
    		Write-Host -ForegroundColor BLUE "Report written to $filename .txt in current path."
    		Get-Item $filename
    	}
    }


    • Bearbeitet Leinadgnom Donnerstag, 22. Juni 2017 08:49
    Donnerstag, 22. Juni 2017 08:49
  • Moin,

    das wird nicht besser, wenn Du immer und immer wieder die gleiche Frage stellst, aber nicht auf die Antworten eingehst.

    Ich hatte Dir schon im aller ersten Post geschrieben, dass diese Zeile hier falsch ist:

    $report = $report += $userObj

    Siehe hier:

    https://social.technet.microsoft.com/Forums/de-DE/e7115200-746a-45ed-8a64-8544bbaecbd9/datenbank-2-und-5-geben-nur-die-hlfte-aus


    Gruesse aus Berlin schickt Robert - MVP Office Servers and Services (Exchange Server)

    Donnerstag, 22. Juni 2017 09:27
  • Vielen Dank ersteinmal für deine Antwort....aber auch nach der Änderung fehlen die Informationen...

    Er lässt die komplette Spalte "TotalSize" fehlen.....Incl. Überschrift
    • Bearbeitet Leinadgnom Donnerstag, 22. Juni 2017 10:29
    Donnerstag, 22. Juni 2017 10:20
  • Hi,

    welche Daten fehlen denn genau? Wenn es um die "DeletedItemSize" geht versuch es doch mal mit 2 Feldern:

    $userObj | Add-Member NoteProperty -Name "Total Mailbox Size (Mb)" -Value ($stats.TotalItemSize.Value.ToMB()) 
    $userObj | Add-Member NoteProperty -Name "Total Deleted Item Size (Mb)" -Value ($stats.TotalDeletedItemSize.Value.ToMB())

    so funktioniert es bei mir.

    Grüße
    Klaus

     
    Donnerstag, 22. Juni 2017 11:32
  • Habe ich versucht, aber dann ist der report komplett leer
    Donnerstag, 22. Juni 2017 11:46
  • Hi,

    ich hab es mit File Input und 3 Users genau so getestet und das Ergebnis als CSV ausgegeben, das funktioniert bei mir:

    $report | Export-Csv C:\Users\Public\Documents\Scripte\Output\$MbStats.csv -UseCulture -Encoding UTF8 -NoTypeInformation

    Grüße
    Klaus

    Donnerstag, 22. Juni 2017 11:59
  • CSV, daran lags.....wobei ich nicht verstehe warum.....nunja, die Daten will ich nun weiterverarbeiten.....hast du vllt eine schnelle Idee, wie ich eine Zeile in die 4 Variablen $company, $user und $Size splitten kann? Eine Zeile reicht...rest mach ich mit foreach
    Donnerstag, 22. Juni 2017 13:08
  • 

    Ich versteh jetzt deine Frage nicht. du gibst 5 Felder aus und die stehen doch in der CSV-Datei als Überschrift mit Trennzeichen ";" und da drunter stehen alle Werte. Sollte mit Excel jetzt kein Problem sein weiter zu bearbeiten.

    "Company";"Office";"DisplayName";"Total Mailbox Size (Mb)";"Total Deleted Item Size (Mb)";"Last Logon"


    Donnerstag, 22. Juni 2017 13:21
  • Habe es nun wie folgt gemacht:

    $firma1 = Get-content \\Dateipfad\"Firma 1.csv"
    $firma -replace ',"', '         ' -replace '"', '' > \\Dateipfad\"Firma 1.txt"
    foreach ($companylist in (Get-Content \\Dateipfad\companylist.txt))
    {
    	foreach ($postfaecher in (Get-Content \\Dateipfad\Exchange\$companylist.txt))
    	{
    		# Leere Zeilen ignorieren
    		if ($postfaecher) {
    			#Zeilen der TXTs in die verschiedenen Werte aufspalten
    			$company,$office,$user,[int]$size = $postfaecher -split ' {2,}'
    							
    $worksheet = $workbook.worksheets | where {$_.name -eq "$company"}
    				$postfaecherCount++
    				$count = ($worksheet.UsedRange.Rows).count+1
    				$worksheet.Cells.Item($count,1) = "$company"
    				$worksheet.Cells.Item($count,2) = "$office"
    				$worksheet.Cells.Item($count,3) = "$user"
    				$worksheet.Cells.Item($count,4) = "$size"
    jedoch wird anschließend NICHTS in excel ausgegeben


    • Bearbeitet Leinadgnom Donnerstag, 22. Juni 2017 15:37
    Donnerstag, 22. Juni 2017 15:36