Jump to content

Powershell zu XML


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

ich habe mir über Powershell ein paar Daten in eine Text Datei schreiben lassen.

 

Nun möchte ich diese, wie z.B. im Qstatus von MSXFAQ.DE:QStatus

 

diese Daten aufbereiten.

 

Wie kann man das machen? Gerade weil die Farben einzelner Spalten sich anhand der Daten ändern.

 

Kann man mit XML Text Dateien importieren, oder muss man die XML aus Powershell machen? Wie kommen die Farbunterschiede zustande?

 

In PHP würde ich die importieren und dann jede Spalte auf Ihren Wert abfragen, aber in XML???

 

Gruß Daniel

Link zu diesem Kommentar

Das klingt doch schon mal sehr gut. Damit ich das richtig verstehe kann ich mit convertto-xml z.B. eine Ausgabe eines Powershell Befehls in eine Datei im XML Format speichern und ich kann aber auch aus Powershell direkt ein xml erstellen?

 

 

Using PowerShell to Generate XML Documents - Windows PowerShell Blog - Site Home - MSDN Blogs

Link zu diesem Kommentar
Das klingt doch schon mal sehr gut. Damit ich das richtig verstehe kann ich mit convertto-xml z.B. eine Ausgabe eines Powershell Befehls in eine Datei im XML Format speichern und ich kann aber auch aus Powershell direkt ein xml erstellen?

 

 

Using PowerShell to Generate XML Documents - Windows PowerShell Blog - Site Home - MSDN Blogs

Der Blogartikel stammt aus einer Zeit der PowerShell wo es das Cmdlet Convertto-Xml noch nicht gab. ;)

Link zu diesem Kommentar

Hallo,

 

bisher lasse ich eine Powershell Batch mit einzelnen Abfragen ablaufen und schicke die Ergebnisse in eine Textdatei oder auf die Konsole.

 

Was ich möchte ist, dass anstatt einer Textdatei eine XML Datei entsteht.

 

Muss ich nun nach jeder einzelnen Abfrage das converttoxml aufrufen und kann ich z.B. die kompletten Konsolenausgaben am Ende einmalig mit ctoxml in die xml schreiben?

 

Ich lege mal den Quellcode (Auszug) dazu, denn vielleicht möchten andere das auch haben.

 

gruß daniel

 

# for Exchange 2010
# Check if Ex2010 cmdlets are present - if not, load them
$ExCom = Get-Command get-Mailbox -ErrorAction SilentlyContinue
if ($ExCom -eq $Null) {
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
}

# Set global Constants

$DiskspacePercentageFree = 10
$QueueMessageUpperLevel = 20 			# In Number of Messages
$MemoryThreshold = 800 					# MB Free
$CPU_UpperLeverPercentage = 20 			# Utilisation over sample period

# Get local server name
$Srv = $env:computername

# Set initial error state (0 is OK, 1 is critical)
Set-Variable -Name Exitcode -Value 0 -Scope Global

function PrintMessage($strSubject,$strBody){

    $strSubject
 $strBody
}

function checkServer(){

$pingStat = Get-WmiObject -class Win32_PingStatus -Filter "Address = '$Srv'" | select StatusCode

if ($pingStat.StatusCode -eq 0){
	Write-Host "Server $Srv Replied to ping" -ForegroundColor Green
	Write-Output "Server $Srv Replied to ping"
	checkRoles
}else{
	Write-Host "Server $Srv did not reply to ping" -ForegroundColor Red
	Write-Output "Server $Srv did not reply to ping" 
	$MessBody = "Exchange Server: $Srv is not responding to ping requests"
	PrintMessage "Exchange Server not responding to pings" $MessBody
	Set-Variable -Name Exitcode -Value 1 -Scope Global
	Exit $Exitcode
}
}

function checkDiskSpaceFree($strServer){

$fixedDisks = Get-WmiObject -ComputerName $strServer -Class Win32_LogicalDisk -Filter "DriveType = 3"
foreach($disk in $fixedDisks){

	$id = $disk.DeviceID
	[float]$size = $disk.size
	[float]$free = $disk.FreeSpace
	$pctFree = [Math]::Round(($free / $size) * 100, 2)
	$szGB = [Math]::Round($size / 1073741824, 2)
	$frGB = [Math]::Round($free / 1073741824, 2)
	if($pctFree -lt $DiskspacePercentageFree){
		$MessBody = "Exchange Server Disk Space Issue: $strServer disk $id has less than $DiskspacePercentageFree% Free`nDisk Size: $szGB`nFree Space: $frGB"
		PrintMessage "Exchange Disk Issue Detected" $MessBody	
		Set-Variable -Name Exitcode -Value 1 -Scope Global
	}
}
}

function mailBoxRoleTests($strMBXServer){

# Check for dismounted Databases
# Backups (called from this function)
# Size of DB

$MDB = Get-MailboxDatabase -Server $strMBXServer -Status 
$PFD = Get-PublicFolderDatabase -Server $strMBXServer -Status

Write-Host "Checking Mailbox Databases" -ForegroundColor Cyan
Write-Output "Checking Mailbox Databases" 
foreach($MxDB in $MDB){
	if($MxDB.Mounted -eq $False){
		$MessBody = "Exchange Server Mailbox Database $MxDB is not Mounted"
		PrintMessage "Exchange Database not Mounted" $MessBody
		Set-Variable -Name Exitcode -Value 1 -Scope Global
	}
}
Write-Host "Checking Public Folders Databases" -ForegroundColor Cyan
Write-Output "Checking Public Folders Databases"
foreach($pfDB in $PFD){
	if($pfDB.Mounted -eq $False){
		$MessBody = "Exchange Server Public Folder Database $pfDB is not Mounted"
		PrintMessage "Exchange Public Folder Database not Mounted" $MessBody
		Set-Variable -Name Exitcode -Value 1 -Scope Global
	}
}

# Get disk information
Write-Host "Checking Free Disk Space" 
Write-Output "Checking Free Disk Space" 
checkDiskSpaceFree $strMBXServer
}


Link zu diesem Kommentar

Jetzt bin ich doch selbst einen Schritt weitergekommen. Das PS1 Skript lasse ich über eine Batch Datei aufrufen und dabei übergebe ich den Befehl convertto-xml.

 

Nun habe ich die gewünschte XML Datei. Allerdings würde ich gerne noch eine css Datei mit integrieren.

 

Würde es funktionieren, wenn ich im PS1 Skript eine Textausgabe wie z.B.

"<!DOCTYPE fahrplan SYSTEM "test.dtd">

<?xml-stylesheet type="text/css" href="test.css" ?>"

mache?

 

Oder folgenden Parameter angeben?

 

-CssUri Uri The Uniform Resource Identifier (URI) of the cascading style sheet

The CSS URI is included as a style sheet link in the output.

 

 

Gruß Daniel

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...