8
0

Anlage des Repos

This commit is contained in:
2024-01-24 16:42:38 +01:00
commit 38d6a271c4
1785 changed files with 3051496 additions and 0 deletions

View File

@@ -0,0 +1,729 @@
# 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()