729 lines
41 KiB
PowerShell
729 lines
41 KiB
PowerShell
# PowerShell 3.0 Script
|
||
# EMC² QuickScan Job Script zur automatischen
|
||
# Abarbeitung und Sortierung von Scan Dateien.
|
||
|
||
# Digital Data
|
||
# Ludwig-Rinn-Strasse 16
|
||
# 35452 Heuchelheim
|
||
# Tel.: 0641 / 202360
|
||
# E-Mail: info@didalog.de
|
||
|
||
# Version 1.0
|
||
# Letzte Aktualisierung: 19.08.2014
|
||
|
||
# Mindestanforderung für dieses Skript:
|
||
# Microsoft Windows XP SP3 / Server 2008 R2 SP1 -> siehe KB976932
|
||
# Microsoft .NET Framework 4.5 -> siehe KB2858728
|
||
# Microsoft PowerShell 4.0 -> siehe KB2819745
|
||
|
||
# WICHTIG: Falls sich dieses Skript nicht ausführen lässt,
|
||
# muss dieser PS-Befehl noch mit administrativen Rechten ausgeführt werden:
|
||
# set-executionpolicy unrestricted
|
||
|
||
#Requires –Version 3.0
|
||
|
||
#-----------------------------------------------------------------------------------------------------
|
||
############################ Zusätzliche Assemblys hinzufügen bzw. laden. ############################
|
||
#-----------------------------------------------------------------------------------------------------
|
||
|
||
|
||
#-----------------------------------------------------------------------------------------------------
|
||
######################################## Variablen definieren. #######################################
|
||
#-----------------------------------------------------------------------------------------------------
|
||
|
||
Set-Variable -Name SkriptName -Value (($MyInvocation.MyCommand.Name) -split "\.")[0].ToString() -Scope script
|
||
Set-Variable -Name SkriptPfad -Value (Split-Path ($MyInvocation.MyCommand.Path)) -Scope script
|
||
Set-Variable -Name KonfigDatei -Value "$SkriptPfad\$SkriptName`_Settings.ini" -Scope script
|
||
Set-Variable -Name KonfigWerte -Value $NULL -Scope script
|
||
Set-Variable -Name ZeitStempel1 -Value $(Get-Date -Format 'ddMMyyyy_HHmmss') -Scope script
|
||
Set-Variable -Name Fehler -Value $NULL -Scope local
|
||
Set-Variable -Name LogDatei -Value "$SkriptName`_$ZeitStempel1.log" -Scope script
|
||
Set-Variable -Name LogEintrag -Value $NULL -Scope local
|
||
Set-Variable -Name LogPfadListe -Value $NULL -Scope script
|
||
Set-Variable -Name LogPfad -Value "E:\Dokumentverarbeitung\Logs\WinSped_Touren_Export" -Scope script
|
||
Set-Variable -Name LogPfadEintrag -Value $NULL -Scope script
|
||
Set-Variable -Name LogEntfernen -Value 3 -Scope script
|
||
Set-Variable -Name DateiTrennzeichen -Value "_" -Scope script
|
||
Set-Variable -Name OutputDatei -Value "E:\FTP\WebFrontEndVCL\WinSped_Export\WinSped_Touren_Export_$ZeitStempel1.xml" -Scope script
|
||
Set-Variable -Name LogPfadEintrag -Value $NULL -Scope script
|
||
|
||
#-----------------------------------------------------------------------------------------------------
|
||
####################################### Funktionen definieren. #######################################
|
||
#-----------------------------------------------------------------------------------------------------
|
||
|
||
# Funktion um einen Pfad zu überprüfen und ggf. neu anzulegen, inkl. Fehlerbehandlung.
|
||
# Ruft Funktion "Func-Write-LogDatei -LogEintrag" auf, um Aktivitäten zu protokollieren.
|
||
Function Func-Pfadüberprüfung
|
||
{
|
||
Param
|
||
(
|
||
[String]$Pfad
|
||
)
|
||
|
||
$PfadTest = Test-Path -PathType Container $Pfad
|
||
Func-Write-LogDatei -LogEintrag "Pfadüberprüfung: Prüfe ob Pfad bereits angelegt ist: $Pfad"
|
||
IF ($PfadTest -eq "True")
|
||
{
|
||
Func-Write-LogDatei -LogEintrag "Pfadüberprüfung: Pfad $Pfad ist bereits angelegt."
|
||
}
|
||
ELSE
|
||
{
|
||
Func-Write-LogDatei -LogEintrag "Pfadüberprüfung: Pfad $Pfad muss angelegt werden."
|
||
New-Item -Path $Pfad -ItemType directory -force -ErrorAction SilentlyContinue | Out-Null
|
||
$PfadTest1 = Test-Path -PathType Container $Pfad
|
||
Func-Write-LogDatei -LogEintrag "Pfadüberprüfung: Prüfe ob Pfad erfolgreich angelegt werden konnte."
|
||
IF ($PfadTest1 -eq "True")
|
||
{
|
||
Func-Write-LogDatei -LogEintrag "Pfadüberprüfung: Pfad $Pfad wurde erfolgreich angelegt."
|
||
}
|
||
ELSE
|
||
{
|
||
Func-Write-LogDatei -LogEintrag "FEHLER: Pfad $Pfad konnte nicht angelegt werden."
|
||
Func-Write-LogDatei -LogEintrag "INFO: Bitte überprüfen Sie Ihre Dateisystem Rechte!"
|
||
Func-Write-LogDatei -LogEintrag "Programm wird ungeplant beendet."
|
||
EXIT
|
||
}
|
||
}
|
||
}
|
||
|
||
# Funktion um Logdateien zu schreiben.
|
||
Function Func-Write-LogDatei
|
||
{
|
||
Param
|
||
(
|
||
[string]$LogEintrag
|
||
)
|
||
|
||
# Der Fehlerindikator ($?) muss bereits zu Anfang abgefragt werden,
|
||
# da er von JEDEM funktionierenden Befehl wieder auf True gesetzt wird.
|
||
IF ($? -ne 'True')
|
||
{
|
||
Set-Variable -Name Fehler -Value 1
|
||
}
|
||
|
||
IF ($LogPfad -eq $NULL)
|
||
{
|
||
|
||
Set-Variable -Name LogPfadListe -Value @($LogPfadListe)
|
||
Set-Variable -Name LogPfadListe -Value ($LogPfadListe += "$SkriptPfad\Logs","$env:temp")
|
||
|
||
FOREACH ($LogPfadEintrag in $LogPfadListe)
|
||
{
|
||
$PfadTest = Test-Path -PathType Container "$LogPfadEintrag"
|
||
Write-Host "Pfadüberprüfung: Prüfe ob LogPfad bereits angelegt ist: $LogPfadEintrag"
|
||
IF ($PfadTest -eq "True")
|
||
{
|
||
Write-Host "Pfadüberprüfung: LogPfad $LogPfadEintrag ist bereits angelegt!"
|
||
Set-Variable -Name LogPfad -Value $LogPfadEintrag
|
||
break
|
||
}
|
||
ELSE
|
||
{
|
||
Write-Host "Pfadüberprüfung: LogPfad $LogPfadEintrag muss angelegt werden."
|
||
New-Item -Path $LogPfadEintrag -ItemType directory -force -ErrorAction SilentlyContinue | Out-Null
|
||
$PfadTest = Test-Path -PathType Container $LogPfadEintrag
|
||
Write-Host "Pfadüberprüfung: Prüfe ob Pfad erfolgreich angelegt werden konnte."
|
||
IF ($PfadTest -eq "True")
|
||
{
|
||
Write-Host "Pfadüberprüfung: Pfad $LogPfadEintrag wurde erfolgreich angelegt."
|
||
Set-Variable -Name LogPfad -Value $LogPfadEintrag
|
||
break
|
||
}
|
||
ELSE
|
||
{
|
||
Write-Host "Pfadüberprüfung: Pfad $LogPfadEintrag konnte nicht angelegt werden."
|
||
Set-Variable -Name LogPfad -Value $LogPfadEintrag
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
ELSEIF ($LogPfad -eq $env:temp)
|
||
{
|
||
Write-Warning "FEHLER: LogPfad nicht zugreifbar oder nicht korrekt konfiguriert!"
|
||
Write-Warning "INFO: $LogPfad - wird nun verwendet!"
|
||
Write-Warning "Programm wird trotzdem fortgesetzt."
|
||
}
|
||
|
||
Set-Variable -Name LogPfad -Value $LogPfad -scope script
|
||
|
||
Write-Host $LogEintrag
|
||
Add-content $LogPfad\$LogDatei -value "$(Get-Date -Format 'dd.MM.yyyy')-$(Get-Date -Format 'HH:mm:ss'): $LogEintrag"
|
||
|
||
IF ($Fehler -eq 1)
|
||
{
|
||
Write-Host "Fehlermeldung: $error"
|
||
Add-content $LogPfad\$LogDatei -value "$(Get-Date -Format 'dd.MM.yyyy')-$(Get-Date -Format 'HH:mm:ss'): Fehlermeldung: $error"
|
||
# Setze Fehlerspeicher zurück
|
||
$error.clear()
|
||
}
|
||
}
|
||
|
||
Function Func-Dateien-zusammensuchen
|
||
{
|
||
Param
|
||
(
|
||
[String]$SuchPfad,
|
||
[String]$SuchDateiEndung
|
||
)
|
||
$Funde = Get-ChildItem -Path $SuchPfad -include *.$SuchDateiEndung -exclude *Test*.$SuchDateiEndung
|
||
IF ($Funde -eq $NULL)
|
||
{
|
||
Func-Write-LogDatei -LogEintrag "Im Pfad $SuchPfad, wurden keine Dateien gefunden!"
|
||
}
|
||
ELSE
|
||
{
|
||
Func-Write-LogDatei -LogEintrag "Im Pfad $SuchPfad, wurde..."
|
||
FOREACH ($Fund in $Funde)
|
||
{
|
||
Func-Write-LogDatei -LogEintrag "...folgende Datei gefunden: $Fund"
|
||
}
|
||
return $Funde
|
||
}
|
||
}
|
||
|
||
Function Func-LKZ-prüfen
|
||
{
|
||
Param
|
||
(
|
||
[String]$LKZ
|
||
)
|
||
|
||
Func-Write-LogDatei "Konvertiere Länderkennzeichen, damit sie ISO 3166 konform ausgegeben werden können."
|
||
|
||
IF ($LKZ -eq 'A')
|
||
{
|
||
Func-Write-LogDatei "Das ausgelesene Länderkennzeichen: $LKZ wird geändert zu: AT"
|
||
Set-Variable -Name LKZ -Value 'AT'
|
||
}
|
||
ELSEIF ($LKZ -eq 'B')
|
||
{
|
||
Func-Write-LogDatei "Das ausgelesene Länderkennzeichen: $LKZ wird geändert zu: BE"
|
||
Set-Variable -Name LKZ -Value 'BE'
|
||
}
|
||
ELSEIF ($LKZ -eq 'D' -or 'DEU')
|
||
{
|
||
Func-Write-LogDatei "Das ausgelesene Länderkennzeichen: $LKZ wird geändert zu: DE"
|
||
Set-Variable -Name LKZ -Value 'DE'
|
||
}
|
||
ELSEIF ($LKZ -eq 'E' -or 'EST')
|
||
{
|
||
Func-Write-LogDatei "Das ausgelesene Länderkennzeichen: $LKZ wird geändert zu: ES"
|
||
Set-Variable -Name LKZ -Value 'ES'
|
||
}
|
||
ELSEIF ($LKZ -eq 'F')
|
||
{
|
||
Func-Write-LogDatei "Das ausgelesene Länderkennzeichen: $LKZ wird geändert zu: FR"
|
||
Set-Variable -Name LKZ -Value 'FR'
|
||
}
|
||
ELSEIF ($LKZ -eq 'FIN')
|
||
{
|
||
Func-Write-LogDatei "Das ausgelesene Länderkennzeichen: $LKZ wird geändert zu: FI"
|
||
Set-Variable -Name LKZ -Value 'FI'
|
||
}
|
||
ELSEIF ($LKZ -eq 'H')
|
||
{
|
||
Func-Write-LogDatei "Das ausgelesene Länderkennzeichen: $LKZ wird geändert zu: HU"
|
||
Set-Variable -Name LKZ -Value 'HU'
|
||
}
|
||
ELSEIF ($LKZ -eq 'I')
|
||
{
|
||
Func-Write-LogDatei "Das ausgelesene Länderkennzeichen: $LKZ wird geändert zu: IT"
|
||
Set-Variable -Name LKZ -Value 'IT'
|
||
}
|
||
ELSEIF ($LKZ -eq 'L')
|
||
{
|
||
Func-Write-LogDatei "Das ausgelesene Länderkennzeichen: $LKZ wird geändert zu: LU"
|
||
Set-Variable -Name LKZ -Value 'LU'
|
||
}
|
||
ELSEIF ($LKZ -eq 'N')
|
||
{
|
||
Func-Write-LogDatei "Das ausgelesene Länderkennzeichen: $LKZ wird geändert zu: NO"
|
||
Set-Variable -Name LKZ -Value 'NO'
|
||
}
|
||
ELSEIF ($LKZ -eq 'S')
|
||
{
|
||
Func-Write-LogDatei "Das ausgelesene Länderkennzeichen: $LKZ wird geändert zu: SE"
|
||
Set-Variable -Name LKZ -Value 'SE'
|
||
}
|
||
ELSEIF ($LKZ -eq 'SLO')
|
||
{
|
||
Func-Write-LogDatei "Das ausgelesene Länderkennzeichen: $LKZ wird geändert zu: SI"
|
||
Set-Variable -Name LKZ -Value 'SI'
|
||
}
|
||
ELSEIF ($LKZ -eq 'P')
|
||
{
|
||
Func-Write-LogDatei "Das ausgelesene Länderkennzeichen: $LKZ wird geändert zu: PT"
|
||
Set-Variable -Name LKZ -Value 'PT'
|
||
}
|
||
ELSE
|
||
{
|
||
Func-Write-LogDatei "Das ausgelesene Länderkennzeichen scheint korrekt zu sein und wird nicht geändert."
|
||
}
|
||
|
||
Return $LKZ
|
||
}
|
||
|
||
# Funktion um gewisse Sonderzeichen zu entfernen bzw. zu ersetzen.
|
||
Function Func-Sonderzeichen-Ersetzen
|
||
{
|
||
Param
|
||
(
|
||
[String]$Zeichenkette
|
||
)
|
||
|
||
$Zeichenkette = ($Zeichenkette -Replace '&','und')
|
||
|
||
Return $Zeichenkette
|
||
}
|
||
|
||
|
||
# Funktion um Daten aus einem Microsoft SQL Server in Form von Datasets auszulesen bzw. bereitzustellen.
|
||
Function Func-DB-Ausgabe
|
||
{
|
||
Param
|
||
(
|
||
[String]$SQLQuery
|
||
)
|
||
|
||
Func-Write-LogDatei -LogEintrag ""
|
||
Func-Write-LogDatei -LogEintrag "Führe folgende SQL Abfrage bzw. Ausgabe durch:"
|
||
Func-Write-LogDatei -LogEintrag "$SQLQuery"
|
||
|
||
$SQLServer = "vm-10-7\mssqlserver_1"
|
||
$SQLDBName = "IID"
|
||
$user = "digitaldata"
|
||
$pwd = "ks7788b"
|
||
|
||
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
|
||
$SqlConnection.ConnectionString = "Server = $SQLServer; ;uid=$user; pwd=$pwd; Database = $SQLDBName; Integrated Security = False"
|
||
|
||
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
|
||
$SqlCmd.CommandText = $SqlQuery
|
||
$SqlCmd.Connection = $SqlConnection
|
||
|
||
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
|
||
$SqlAdapter.SelectCommand = $SqlCmd
|
||
|
||
$DataSet = New-Object System.Data.DataSet
|
||
|
||
$SqlConnection.Open()
|
||
$SqlAdapter.Fill($DataSet)
|
||
$SqlConnection.Close()
|
||
|
||
Func-Write-LogDatei -LogEintrag "Die Abfrage hat $($DataSet.Tables[0].Rows.Count) Zeile(n) zurückgeliefert."
|
||
#$DataSet.Tables[0].Rows | Out-GridView
|
||
|
||
Return $DataSet
|
||
}
|
||
|
||
# Funktion um Daten in einen Microsoft SQL Server zu schreiben.
|
||
Function Func-DB-Eingabe
|
||
{
|
||
Param
|
||
(
|
||
[String]$SQLQuery
|
||
)
|
||
|
||
Func-Write-LogDatei -LogEintrag ""
|
||
Func-Write-LogDatei -LogEintrag "Führe folgende SQL Abfrage bzw. Eingabe durch:"
|
||
Func-Write-LogDatei -LogEintrag "$SQLQuery"
|
||
|
||
$SQLServer = "vm-10-7\mssqlserver_1"
|
||
$SQLDBName = "IID"
|
||
$user = "digitaldata"
|
||
$pwd = "ks7788b"
|
||
|
||
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
|
||
$SqlConnection.ConnectionString = "Server = $SQLServer; ;uid=$user; pwd=$pwd; Database = $SQLDBName; Integrated Security = False"
|
||
|
||
$SqlConnection.Open()
|
||
|
||
$SqlCmd = $SqlConnection.CreateCommand()
|
||
$SqlCmd.CommandText ="$SQLQuery"
|
||
$SqlCmd.ExecuteNonQuery()
|
||
|
||
$SqlConnection.Close()
|
||
}
|
||
|
||
#-----------------------------------------------------------------------------------------------------
|
||
####################################### Hauptprogramm starten. #######################################
|
||
#-----------------------------------------------------------------------------------------------------
|
||
Clear-Host
|
||
Write-Host ""
|
||
|
||
Func-Write-LogDatei -LogEintrag "*******************************************************************************************"
|
||
Func-Write-LogDatei -LogEintrag "Programmstart von $Skriptname auf $env:computername unter dem Konto: $env:USERDOMAIN\$env:USERNAME."
|
||
Func-Write-LogDatei -LogEintrag "*******************************************************************************************"
|
||
|
||
# Dataset für für nicht verarbeitete Touren bzw. Tourdaten.
|
||
$DataSet = Func-DB-Ausgabe -SQLQuery "SELECT TOURNR, TOURDATUM FROM VWWEB_TOURDATEN WHERE TOURNR NOT IN (SELECT TOURNR FROM TBDD_TOUREN_EXPORT) GROUP BY TOURNR, TOURDATUM ORDER BY TOURNR"
|
||
#$DataSet = Func-DB-Ausgabe -SQLQuery "SELECT TOURNR, TOURDATUM FROM VWWEB_TOURDATEN WHERE TOURNR = 8039379 or TOURNR = 8000899 OR TOURNR = 8005910 GROUP BY TOURNR, TOURDATUM ORDER BY TOURNR"
|
||
|
||
IF ($($DataSet.Tables[0].Rows.Count) -gt 0)
|
||
{
|
||
$encoding = [System.Text.Encoding]::UTF8
|
||
|
||
# .NET XML Parser wird herangezogen
|
||
$XmlWriter = New-Object System.XMl.XmlTextWriter($OutputDatei,$encoding)
|
||
|
||
# XML Format Einstellungen
|
||
$xmlWriter.Formatting = 'Indented'
|
||
$xmlWriter.Indentation = 1
|
||
$XmlWriter.IndentChar = "`t"
|
||
|
||
# Schreibe XML Kopf / Beginn
|
||
$xmlWriter.WriteStartDocument()
|
||
|
||
# Schreibe allegemeine Daten
|
||
$xmlWriter.WriteStartElement('tours')
|
||
$xmlWriter.WriteElementString('format','v1')
|
||
$xmlWriter.WriteElementString('export_date',$(get-date -format yyyy-MM-ddTHH:mm))
|
||
|
||
FOREACH ($row in $DataSet.Tables[0].Rows)
|
||
{
|
||
Func-Write-LogDatei -LogEintrag ""
|
||
Func-Write-LogDatei -LogEintrag "Starte Schleife für Touren:"
|
||
Func-Write-LogDatei -LogEintrag "-----------------------------------------------"
|
||
|
||
# Öffne Knoten: "tour"
|
||
$xmlWriter.WriteStartElement('tour')
|
||
|
||
Func-Write-LogDatei -LogEintrag "Das ausgelesene TourDatum lautet: $($Row[1])"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <tour_date> geschrieben."
|
||
Set-Variable -Name tour_date -Value $($Row[1])
|
||
|
||
# Konvertiere ausgelesenes Datum
|
||
$tour_date = [DateTime]::ParseExact($tour_date,'MM\/dd\/yyyy HH:mm:ss',$NULL)
|
||
$tour_date_year = ($tour_date.Year.ToString().Trim())
|
||
$tour_date_month = ($tour_date.Month.ToString().Trim())
|
||
$tour_date_day = ($tour_date.Day.ToString().Trim())
|
||
$tour_date_hour = ($tour_date.Hour.ToString().Trim())
|
||
$tour_date_minute = {00} -f ($tour_date.Minute.ToString().Trim())
|
||
$tour_date_Second = {00} -f ($tour_date.Second.ToString().Trim())
|
||
|
||
$xmlWriter.WriteElementString('tour_date',"${tour_date_year}-${tour_date_month}-${tour_date_day}T${tour_date_minute}:${tour_date_second}")
|
||
|
||
# Schreibe TourNr
|
||
Set-Variable -Name tour_no -Value $($Row[0])
|
||
Func-Write-LogDatei -LogEintrag "Die ausgelesene TourNr lautet: $tour_no"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <tour_no> geschrieben."
|
||
$xmlWriter.WriteElementString('tour_no',$tour_no)
|
||
|
||
# Öffne Knoten: "driver"
|
||
$xmlWriter.WriteStartElement('driver')
|
||
|
||
# Erstelle Dataset für den Fahrer der Tour
|
||
$Dataset = Func-DB-Ausgabe -SQLQuery "SELECT DISTINCT TOURLKW FROM VWWEB_TOURDATEN WHERE TOURNR = $tour_no"
|
||
|
||
Set-Variable -Name driverID -Value $($Dataset.Tables[0].Rows[0][0])
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Fahrer für die TourNr: $tour_no lautet: $driverID"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <driverID> geschrieben."
|
||
$xmlWriter.WriteElementString('driverID',$driverID)
|
||
|
||
# Lösche Dataset für den Fahrer der Tour
|
||
$Dateset.clear
|
||
|
||
# Schließe Knoten: "driver"
|
||
$xmlWriter.WriteEndElement()
|
||
|
||
# Öffne Knoten: "deliveries"
|
||
$xmlWriter.WriteStartElement('deliveries')
|
||
|
||
$Dataset = Func-DB-Ausgabe -SQLQuery "SELECT [AufNr],[REFERENZNR2],[REFERENZNR3],[Info],[EmpNr],[EmpLKZ],[EmpPLZ],[EmpOrt],[EmpOrtsteil],[EmpStrasse],[EmpName1],[EmpName2],[EmpTel] FROM VWWEB_TOURDATEN WHERE TourNr = $tour_no GROUP BY [AufNr],[REFERENZNR2],[REFERENZNR3],[Info],[EmpNr],[EmpLKZ],[EmpPLZ],[EmpOrt],[EmpOrtsteil],[EmpStrasse],[EmpName1],[EmpName2],[EmpTel]"
|
||
#$DataSet.Tables[0] | Out-GridView
|
||
|
||
FOREACH ($Row in $DataSet.Tables[0].Rows)
|
||
{
|
||
Func-Write-LogDatei -LogEintrag ""
|
||
Func-Write-LogDatei -LogEintrag "Starte Schleife für Sendungen:"
|
||
Func-Write-LogDatei -LogEintrag "-----------------------------------------------"
|
||
|
||
# Öffne Knoten: "delivery"
|
||
$xmlWriter.WriteStartElement('delivery')
|
||
|
||
Set-Variable -Name order_no -Value $($Row["AufNr"])
|
||
Func-Write-LogDatei -LogEintrag "Die ausgelesene Sendungs-Nummer lautet: $order_no"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <order_no> geschrieben."
|
||
$xmlWriter.WriteElementString('order_no',$order_no)
|
||
|
||
Set-Variable -Name remark -Value $($Row["Info"])
|
||
Func-Write-LogDatei -LogEintrag "Die ausgelesene Bestell-Anmerkung lautet: $remark"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <remark> geschrieben."
|
||
$xmlWriter.WriteElementString('remark',$remark)
|
||
|
||
# Öffne Knoten: "delivery_note"
|
||
$xmlWriter.WriteStartElement('delivery_note')
|
||
|
||
Set-Variable -Name delivery_noteID1 -Value $($Row["REFERENZNR2"])
|
||
Set-Variable -Name delivery_noteID2 -Value $($Row["REFERENZNR3"])
|
||
|
||
IF ($delivery_noteID1 -eq "True" -and $delivery_noteID2 -eq "True")
|
||
{
|
||
Func-Write-LogDatei "delivery_noteID wird den DB Spalten REFERENZNR2 und REFERENZNR3 zusammengebaut."
|
||
Set-Variable -Name delivery_noteID -Value "$delivery_noteID1 | $delivery_noteID2"
|
||
}
|
||
|
||
ELSEIF ($delivery_noteID1 -eq "True")
|
||
{
|
||
Func-Write-LogDatei "delivery_noteID wird der DB Spalten REFERENZNR2 geholt."
|
||
Set-Variable -Name delivery_noteID -Value "$delivery_noteID1"
|
||
}
|
||
|
||
ELSEIF ($delivery_noteID2 -eq "True")
|
||
{
|
||
Func-Write-LogDatei "delivery_noteID wird den DB Spalten REFERENZNR3 geholt."
|
||
Set-Variable -Name delivery_noteID -Value "$delivery_noteID2"
|
||
}
|
||
|
||
ELSE
|
||
{
|
||
Func-Write-LogDatei "delivery_noteID kann nicht gefüllt werden, da beide DB-Spalten (REFERENZNR2 und REFERENZNR3) leer sind."
|
||
Set-Variable -Name delivery_noteID -Value "$NULL"
|
||
}
|
||
|
||
Func-Write-LogDatei -LogEintrag "Die ausgelesene Kunden-Bestellnummer lautet: $delivery_noteID"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <delivery_noteID> geschrieben."
|
||
$xmlWriter.WriteElementString('delivery_noteID',$delivery_noteID)
|
||
|
||
# Schließe Knoten "delivery_note"
|
||
$xmlWriter.WriteEndElement()
|
||
|
||
# Öffne Knoten: "recipient"
|
||
$xmlWriter.WriteStartElement('recipient')
|
||
|
||
Set-Variable -Name customerID -Value $($Row["EmpNr"])
|
||
Func-Write-LogDatei -LogEintrag "Die ausgelesene Kunden-Nummer lautet: $customerID"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <customerID> geschrieben."
|
||
$xmlWriter.WriteElementString('customerID',$customerID)
|
||
|
||
# Öffne Knoten: "delivery_address"
|
||
$xmlWriter.WriteStartElement('delivery_address')
|
||
|
||
Set-Variable -Name country_iso -Value (Func-LKZ-prüfen -LKZ $($Row["EmpLKZ"]))
|
||
Func-Write-LogDatei -LogEintrag "Das ausgelesene Länderkennzeichen lautet: $country_iso"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <country_iso> geschrieben."
|
||
$xmlWriter.WriteElementString('country_iso',$country_iso)
|
||
|
||
Set-Variable -Name zip -Value $($Row["EmpPLZ"])
|
||
Func-Write-LogDatei -LogEintrag "Die ausgelesene Postleitzahl lautet: $zip"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <zip> geschrieben."
|
||
$xmlWriter.WriteElementString('zip',$zip)
|
||
|
||
Set-Variable -Name location -Value $($Row["EmpOrt"])
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Abladeort lautet: $location"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <location> geschrieben."
|
||
$xmlWriter.WriteElementString('location',$location)
|
||
|
||
Set-Variable -Name location_extra -Value $($Row["EmpOrtsteil"])
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Abladeort (Zusatz) lautet: $location_extra"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <location_extra> geschrieben."
|
||
$xmlWriter.WriteElementString('location_extra',$location_extra)
|
||
|
||
Set-Variable -Name street -Value $($Row["EmpStrasse"])
|
||
Func-Write-LogDatei -LogEintrag "Die ausgelesene Straße lautet: $street"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <street> geschrieben."
|
||
$xmlWriter.WriteElementString('street',$street)
|
||
|
||
# Schließe Knoten "delivery_address"
|
||
$xmlWriter.WriteEndElement()
|
||
|
||
# Öffne Knoten: "company"
|
||
$xmlWriter.WriteStartElement('company')
|
||
|
||
Set-Variable -Name name -Value (Func-Sonderzeichen-Ersetzen -Zeichenkette $($Row["EmpName1"]))
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Kunden-Name lautet: $name"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <name> geschrieben."
|
||
$xmlWriter.WriteElementString('name',$name)
|
||
|
||
Set-Variable -Name subsidiary -Value (Func-Sonderzeichen-Ersetzen -Zeichenkette $($Row["EmpName2"]))
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Kunden-Name (Zusatz) lautet: $subsidiary"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <subsidiary> geschrieben."
|
||
$xmlWriter.WriteElementString('subsidiary',$subsidiary)
|
||
|
||
Set-Variable -Name landline -Value $($Row["EmpTel"])
|
||
Func-Write-LogDatei -LogEintrag "Die ausgelesene Telefon-Nummer lautet: $landline"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <landline> geschrieben."
|
||
$xmlWriter.WriteElementString('landline',$landline)
|
||
|
||
# Schließe Knoten "company"
|
||
$xmlWriter.WriteEndElement()
|
||
|
||
# Schließe Knoten "recipient"
|
||
$xmlWriter.WriteEndElement()
|
||
|
||
# Öffne Knoten: "delivery_positions"
|
||
$xmlWriter.WriteStartElement('delivery_positions')
|
||
|
||
$Dataset = Func-DB-Ausgabe -SQLQuery "SELECT [AUFPOSNR],[FFNAME1],[INHALT],[INHALT2],[TATSGEW],[PAL],[PALANZ],[SOLLMEANZ] FROM [IID].[DBO].[VWWEB_TOURDATEN] WHERE AUFNR = $order_no GROUP BY [AUFPOSNR],[FFNAME1],[INHALT],[INHALT2],[TATSGEW],[PAL],[PALANZ],[SOLLMEANZ]"
|
||
#$DataSet.Tables[0] | Out-GridView
|
||
|
||
FOREACH ($Row in $DataSet.Tables[0].Rows)
|
||
{
|
||
|
||
Func-Write-LogDatei -LogEintrag ""
|
||
Func-Write-LogDatei -LogEintrag "Starte Schleife für Sendungspostitionen:"
|
||
Func-Write-LogDatei -LogEintrag "-----------------------------------------------"
|
||
|
||
# Öffne Knoten: "delivery_position"
|
||
$xmlWriter.WriteStartElement('delivery_position')
|
||
|
||
Set-Variable -Name original_sender -Value (Func-Sonderzeichen-Ersetzen -Zeichenkette $($Row["FFName1"]))
|
||
Func-Write-LogDatei -LogEintrag "Die ausgelesene Frachtführer lautet: $original_sender"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <original_sender> geschrieben."
|
||
$xmlWriter.WriteElementString('original_sender',"$original_sender")
|
||
|
||
Set-Variable -Name product_name -Value $($Row["Inhalt"])
|
||
Func-Write-LogDatei -LogEintrag "Die ausgelesene Position lautet: $product_name"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <product_name> geschrieben."
|
||
$xmlWriter.WriteElementString('product_name',$product_name)
|
||
|
||
Set-Variable -Name actual_weight -Value $($Row["TatsGew"])
|
||
Func-Write-LogDatei -LogEintrag "Das ausgelesene Gewicht beträgt: $actual_weight"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <actual_weight> geschrieben."
|
||
$xmlWriter.WriteElementString('actual_weight', $actual_weight)
|
||
|
||
# Öffne Knoten: "quantity_to_deliver"
|
||
$xmlWriter.WriteStartElement('quantity_to_deliver')
|
||
|
||
Set-Variable -Name quantity_to_deliver_unit -Value $($Row["SollMEAnz"])
|
||
Func-Write-LogDatei -LogEintrag "Die ausgelesenen Liter betragen: $quantity_to_deliver_unit"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <quantity_to_deliver_unit> geschrieben."
|
||
$xmlWriter.WriteElementString('quantity_to_deliver_unit', $quantity_to_deliver_unit)
|
||
|
||
# Schließe Knoten "quantity_to_deliver"
|
||
$xmlWriter.WriteEndElement()
|
||
|
||
# Öffne Knoten: "mhes"
|
||
$xmlWriter.WriteStartElement('mhes')
|
||
|
||
Set-Variable -Name amount -Value $($Row["PALANZ"])
|
||
Func-Write-LogDatei -LogEintrag "Das ausgelesene Menge des LHM lautet: $amount"
|
||
#Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <amount> geschrieben."
|
||
|
||
For ($Zähler=0; $Zähler -lt $amount; $Zähler++)
|
||
{
|
||
# Öffne Knoten: "mhe"
|
||
$xmlWriter.WriteStartElement('mhe')
|
||
|
||
Set-Variable -Name type -Value $($Row["PAL"])
|
||
Func-Write-LogDatei -LogEintrag "Das ausgelesene LHM lautet: $type"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <type> geschrieben."
|
||
$xmlWriter.WriteElementString('type', $type)
|
||
|
||
Set-Variable -Name id -Value $($Row["INHALT2"])
|
||
Func-Write-LogDatei -LogEintrag "Die ausgelesene ID des LHMs lautet: $id"
|
||
Func-Write-LogDatei -LogEintrag "Der ausgelesene Wert wird in XML Konten/Element: <id> geschrieben."
|
||
$xmlWriter.WriteElementString('id', $id)
|
||
|
||
# Schließe Knoten "mhe"
|
||
$xmlWriter.WriteEndElement()
|
||
}
|
||
|
||
$Zähler = $NULL
|
||
|
||
# Schließe Knoten "mhes"
|
||
$xmlWriter.WriteEndElement()
|
||
|
||
# Schließe Knoten "delivery_position"
|
||
$xmlWriter.WriteEndElement()
|
||
|
||
Func-Write-LogDatei -LogEintrag "-----------------------------------------------"
|
||
Func-Write-LogDatei -LogEintrag "Beende Schleife für Sendungspostitionen."
|
||
}
|
||
|
||
$Dateset.clear
|
||
|
||
|
||
# Schließe Knoten "delivery_positions"
|
||
$xmlWriter.WriteEndElement()
|
||
|
||
# Schließe Knoten "delivery"
|
||
$xmlWriter.WriteEndElement()
|
||
|
||
Func-Write-LogDatei -LogEintrag "-----------------------------------------------"
|
||
Func-Write-LogDatei -LogEintrag "Beende Schleife für Sendungen."
|
||
}
|
||
|
||
$Dateset.clear
|
||
|
||
# Schließe Knoten "deliveries"
|
||
$xmlWriter.WriteEndElement()
|
||
|
||
# Schließe Knoten "tour"
|
||
$xmlWriter.WriteEndElement()
|
||
|
||
# Setze Status auf "übermittelt"
|
||
Func-DB-Eingabe -SQLQuery "INSERT INTO TBDD_TOUREN_EXPORT (TOURNR, DATEINAME) VALUES ($tour_no, '$OutputDatei')"
|
||
|
||
Func-Write-LogDatei -LogEintrag "-----------------------------------------------"
|
||
Func-Write-LogDatei -LogEintrag "Beende Schleife für Touren."
|
||
}
|
||
|
||
# Schließe Knoten "tours"
|
||
$xmlWriter.WriteEndElement()
|
||
|
||
# XML Datei abschließen
|
||
$xmlWriter.WriteEndDocument()
|
||
$xmlWriter.Flush()
|
||
$xmlWriter.Close()
|
||
}
|
||
|
||
ELSE
|
||
{
|
||
Func-Write-LogDatei "Keine abzuarbeitenden Touren gefunden!"
|
||
}
|
||
|
||
# Löschen alter Log-Dateien.
|
||
Func-Write-LogDatei -LogEintrag ""
|
||
Func-Write-LogDatei -LogEintrag "-------------------------------------------------------------------------------------------"
|
||
Func-Write-LogDatei -LogEintrag "Prüfe ob zu löschende Log-Dateien vorhanden sind."
|
||
Func-Write-LogDatei -LogEintrag "-------------------------------------------------------------------------------------------"
|
||
IF ($LogEntfernen -gt 0)
|
||
{
|
||
Func-Write-LogDatei -LogEintrag "Aktuell sollen Log-Dateien gelöscht werden, die vor $LogEntfernen Tag(en) erstellt wurden."
|
||
$Funde = (Func-Dateien-zusammensuchen -SuchPfad "$LogPfad\*" -SuchDateiEndung log | where {$_.Name -like "*$SkriptName*" -and $_.lastwritetime -lt $((Get-Date).AddDays(-$LogEntfernen)) -and -not $_.psiscontainer})
|
||
IF ($Funde -eq $null)
|
||
{
|
||
Func-Write-LogDatei -LogEintrag "Keine zu löschenden Log-Dateien vorhanden."
|
||
}
|
||
ELSE
|
||
{
|
||
Func-Write-LogDatei -LogEintrag "Dateien gefunden, folgende Log-Dateien werden aufgund ihres alters gelöscht:"
|
||
FOREACH ($Fund in $Funde)
|
||
{
|
||
Func-Write-LogDatei -LogEintrag "Log-Datei: $Fund wird entfernt."
|
||
Remove-Item -Path $Fund -Force -Verbose
|
||
}
|
||
}
|
||
}
|
||
ELSE
|
||
{
|
||
Func-Write-LogDatei -LogEintrag "Sie haben in der Konfigurationsdatei angegeben, das Log Dateien nicht automatisch gelöscht werden sollen!"
|
||
}
|
||
|
||
Func-Write-LogDatei -LogEintrag ""
|
||
Func-Write-LogDatei -LogEintrag "*******************************************************************************************"
|
||
Func-Write-LogDatei -LogEintrag "Programmende von $Skriptname auf $env:computername unter dem Konto: $env:USERDOMAIN\$env:USERNAME."
|
||
Func-Write-LogDatei -LogEintrag "*******************************************************************************************"
|
||
|
||
# Definierte Variablen wieder löschen, damit sie nicht im Arbeitsspeicher verbleiben.
|
||
|
||
Remove-Variable -Name SkriptName -Force
|
||
Remove-Variable -Name SkriptPfad -Force
|
||
Remove-Variable -Name KonfigDatei -Force
|
||
Remove-Variable -Name KonfigWerte -Force
|
||
Remove-Variable -Name ZeitStempel1 -Force
|
||
Remove-Variable -Name Fehler -Force
|
||
Remove-Variable -Name LogDatei -Force
|
||
Remove-Variable -Name LogEintrag -Force
|
||
Remove-Variable -Name LogPfadListe -Force
|
||
Remove-Variable -Name LogPfad -Force
|
||
Remove-Variable -Name LogPfadEintrag -Force
|
||
Remove-Variable -Name LogEntfernen -Force
|
||
Remove-Variable -Name DateiTrennzeichen -Force
|
||
Remove-Variable -Name OutputDatei -Force
|
||
|
||
Remove-Variable -Name Dataset -Force
|
||
|
||
$error.clear() |