Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

PowerShell-Fehlermeldung beim Parsen

Mitglied: diemilz

diemilz (Level 1) - Jetzt verbinden

11.10.2018 um 16:53 Uhr, 419 Aufrufe, 5 Kommentare

Hallo zusammen,

da ich noch nicht so sonderlich versiert in PowerShell bin, bitte ich um Nachsicht, wenn ich hier den Wald vor lauter Bäumen nicht sehen sollte.

Ich habe den Auftrag erhalten, ein bereits bestehendes PowerShell-Skript zum Erstellen von SQL-Backups auf unseren Kassensystemen in unseren Außenlokationen anzupassen. Das Skript funktioniert auch soweit, nur bei einer Funktion habe ich ein Problem. Ich poste erstmal den Code der Funktion. Leider darf ich nicht das ganze Skript posten:

01.
Function Backup-Markt { 
02.
    param ( [Parameter(Mandatory=$true)][string]$Source,
03.
	[Parameter(Mandatory=$true)][string]$Destination,
04.
    [Parameter(Mandatory=$false)][string]$FileSpec = "*.*",
05.
    [Parameter(Mandatory=$false)][string]$LoggingPath = $Env:Temp,
06.
    [Parameter(Mandatory=$false)][string]$LogfileName = "robocopy.log",
07.
    [switch]$Help)
08.
 
09.
    $HelpInfo = @'
10.
 
11.
    Function : Backup-Market
12.
    Date     : 01/13/2015
13.
    Purpose  : Performs a backup of folder named $Source to $Destination
14.
    Usage    : $status = Backup-Market -Source <Path> - Destination <Path> -sourceCredentialsFile <File> -destinationCredentialsFile <File> [-Help]
15.
               where
16.
                  $status       will contain a return object with robocopy information,
17.
                                $status.ExitCode:
18.
                                -1 = source or destination path does not exist / not accessible
19.
                                 0 = No Errors and no Copies
20.
                                 1 = No Errors and new Files Copied
21.
                                 2 = Warning! Extra Files in Dest. Folder
22.
                                 4 = Mismatching Files
23.
                                 8 = Errors on Copying
24.
                                16 = Error no Copy
25.
                                $status.StartTime, $status.Source, $status.Destination, $status.FileName, $status.Options
26.
                  -Source       source folder to backup
27.
                  -Destination  folder for backing up, will be created if it does not exist
28.
                  -FileSpec     filename specification for files to copy, ex. *.bak
29.
                  -LoggingPath  directory to place logfiles in
30.
                  -LogfileName  filename for logfile, ex. $ID.log
31.
                  -Help         displays this help information
32.
 
33.
'@
34.
 
35.
	$RoboStatus = New-Object object
36.
    $enCulture = [Globalization.cultureinfo]::GetCultureInfo("en-US")
37.
 
38.
	# Create the Backup Destination Folder Based on Date Information
39.
	If (!(Test-Path $Destination -pathType container)) { 
40.
        Try {
41.
            $x = mkdir $Destination -ErrorAction Stop
42.
        }
43.
        Catch {
44.
            $ExitCode = -1
45.
        }
46.
    }
47.
	
48.
	# Testing - Available Return Codes from Robocopy to use in Control the Script Flow using Error Codes
49.
	$RoboCopyExitCodes = @{0 = "No Errors, no copying"; 1 = "No Errors, new Files"; 2 = "Warning, extra
50.
	Files"; 4 = "Warning, mismatching Files"; 8 = "Errors, copy errors"; 16 = "ERROR, no copy"}
51.
	
52.
	$date = Get-Date -Format yyyy.MM.dd-HH.mm
53.
	$Logfile = "$LoggingPath\$Logfilename"
54.
 
55.
	# Copy/Move Folder/Files with Robocopy and Create Logfile + Put Log to a Variable //  /L switch is RoboCopy Test Mode!!
56.
	# You can fit here the Robocopy Parameters as you want.
57.
    If ((Test-Path $Source -PathType container) -and (Test-Path $Destination -PathType container)) {
58.
 
59.
        $robolog = Robocopy """$Source""" """$Destination""" """$FileSpec""" /R:3 /W:100 /NP /TEE /MAXAGE:1 /log:$Logfile 2>&1
60.
        Write-Host $robolog[0..$robolog.length]
61.
 
62.
        # Get the Robocopy Exit Code for later Identifying Job Status
63.
        $ExitCode = $LastExitCode
64.
		
65.
		Add-Member -InputObject $RoboStatus -Name ExitCode -Value $ExitCode -MemberType NoteProperty
66.
		
67.
		If ((Get-WmiObject Win32_OperatingSystem).OSlanguage = "1031") {
68.
			# Begin of Parsing Log File / German
69.
			$robolog[0..$robolog.length] | % {
70.
			Switch -regex ($_) {
71.
			**'Gestartet: (.*)' {
72.
				Add-Member -InputObject $RoboStatus -Name StartTime -Value ($matches[1].trim()) -MemberType NoteProperty
73.
                [datetime]$StartTime = [datetime]::ParseExact($matches[1].trim(), "ddd MMM dd HH:mm:ss yyyy", $enCulture)
74.
			}
75.
			'Beendet: (.*)' {
76.
				Add-Member -InputObject $RoboStatus -Name EndTime -Value ($matches[1].trim()) -MemberType NoteProperty
77.
                [datetime]$EndTime = [datetime]::ParseExact($matches[1].trim(), "ddd MMM dd HH:mm:ss yyyy", $enCulture)
78.
                Add-Member -InputObject $RoboStatus -Name Duration -Value $(New-Timespan –Start $StartTime –End $EndTime) -MemberType NoteProperty
79.
			}**
80.
			'Quelle : (.*)' {
81.
				Add-Member -InputObject $RoboStatus -Name Source -Value ($matches[1].trim()) -MemberType NoteProperty
82.
			}
83.
			'Ziel : (.*)' {
84.
				Add-Member -InputObject $RoboStatus -Name Destination -Value ($matches[1].trim()) -MemberType NoteProperty
85.
			}
86.
			'Dateien : (.*)' {
87.
				Add-Member -InputObject $RoboStatus -Name FileName -Value ($matches[1].trim()) -MemberType NoteProperty
88.
			}
89.
			'Optionen: (.*)' {
90.
				Add-Member -InputObject $RoboStatus -Name Options -Value ($matches[1].trim()) -MemberType NoteProperty
91.
			}
92.
            'Dateien:([\s]*)([0-9]+)([\s]*)([0-9]+)([\s]*)([0-9]+)([\s]*)([0-9]+)([\s]*)([0-9]+)([\s]*)([0-9]+)' {
93.
                #Total Copied Skipped Mismatch FAILED Extras
94.
				Add-Member -InputObject $RoboStatus -Name NumberOfFilesTotal -Value ($matches[2].trim()) -MemberType NoteProperty
95.
				Add-Member -InputObject $RoboStatus -Name NumberOfFilesCopied -Value ($matches[4].trim()) -MemberType NoteProperty
96.
				Add-Member -InputObject $RoboStatus -Name NumberOfFilesSkipped -Value ($matches[6].trim()) -MemberType NoteProperty
97.
				Add-Member -InputObject $RoboStatus -Name NumberOfFilesMismatch -Value ($matches[8].trim()) -MemberType NoteProperty
98.
				Add-Member -InputObject $RoboStatus -Name NumberOfFilesFailed -Value ($matches[10].trim()) -MemberType NoteProperty
99.
				Add-Member -InputObject $RoboStatus -Name NumberOfFilesExtras -Value ($matches[12].trim()) -MemberType NoteProperty
100.
			}             
101.
            'Verzeich.:([\s]*)([0-9]+)([\s]*)([0-9]+)([\s]*)([0-9]+)([\s]*)([0-9]+)([\s]*)([0-9]+)([\s]*)([0-9]+)' {
102.
                #Total Copied Skipped Mismatch FAILED Extras
103.
				Add-Member -InputObject $RoboStatus -Name NumberOfFoldersTotal -Value ($matches[2].trim()) -MemberType NoteProperty
104.
				Add-Member -InputObject $RoboStatus -Name NumberOfFoldersCopied -Value ($matches[4].trim()) -MemberType NoteProperty
105.
				Add-Member -InputObject $RoboStatus -Name NumberOfFoldersSkipped -Value ($matches[6].trim()) -MemberType NoteProperty
106.
				Add-Member -InputObject $RoboStatus -Name NumberOfFoldersMismatch -Value ($matches[8].trim()) -MemberType NoteProperty
107.
				Add-Member -InputObject $RoboStatus -Name NumberOfFoldersFailed -Value ($matches[10].trim()) -MemberType NoteProperty
108.
				Add-Member -InputObject $RoboStatus -Name NumberOfFoldersExtras -Value ($matches[12].trim()) -MemberType NoteProperty
109.
			} } }   # End of Parsing Log File
110.
		} Else {
111.
			# Begin of Parsing Log File / English
112.
			$robolog[$StartBegin..$StartEnd] | % {
113.
			Switch -regex ($_) {
114.
			'Started :(.*)' {
115.
			Add-Member -InputObject $RoboStatus -Name StartTime -Value ($matches[1].trim()) -MemberType NoteProperty
116.
			}
117.
			'Source :(.*)' {
118.
			Add-Member -InputObject $RoboStatus -Name Source -Value ($matches[1].trim()) -MemberType NoteProperty
119.
			}
120.
			'Dest :(.*)' {
121.
			Add-Member -InputObject $RoboStatus -Name Destination -Value ($matches[1].trim()) -MemberType NoteProperty
122.
			}
123.
			'Files :(.*)' {
124.
			Add-Member -InputObject $RoboStatus -Name FileName -Value ($matches[1].trim()) -MemberType NoteProperty
125.
			}
126.
			'Options :(.*)' {
127.
			Add-Member -InputObject $RoboStatus -Name Options -Value ($matches[1].trim()) -MemberType NoteProperty
128.
			} }	}   # End of Parsing Log File
129.
		}
130.
    } Else {
131.
        $ExitCode = -1
132.
        Add-Member -InputObject $RoboStatus -Name ExitCode -Value $ExitCode -MemberType NoteProperty
133.
    }
134.
	
135.
    Return $RoboStatus
136.
}
Die betroffenen Zeilen habe ich fett markiert. Hier wird folgender Fehler ausgespuckt:

01.
Ausnahme beim Aufrufen von "ParseExact" mit 3 Argument(en):  "Die Zeichenfolge wurde nicht als gültiges DateTime erkannt."
02.
In D:\Backup\BackupScript.ps1:178 Zeichen:17
03.
+ ...             [datetime]$StartTime = [datetime]::ParseExact($matches[1] ...
04.
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
05.
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
06.
    + FullyQualifiedErrorId : FormatException
07.
 
08.
Ausnahme beim Aufrufen von "ParseExact" mit 3 Argument(en):  "Die Zeichenfolge wurde nicht als gültiges DateTime erkannt."
09.
In D:\drink.PoS.Pro.Backup\BackupScript.ps1:182 Zeichen:17
10.
+ ...             [datetime]$EndTime = [datetime]::ParseExact($matches[1].t ...
11.
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
12.
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
13.
    + FullyQualifiedErrorId : FormatException
Die Variable $robolog hat den folgenden Inhalt:

01.
  Protokolldatei: D:\Backup\Logs\10002_robocopy.log  -------------------------------------------------------------------------
02.
------    ROBOCOPY     ::     Robustes Dateikopieren für Windows                               ---------------------------------------------
03.
----------------------------------    Gestartet: Donnerstag, 11. Oktober 2018 16:39:59    Quelle : \\test1\backup\      Ziel : \\NA
04.
S01\Backup\10002\2018.10.11\      Dateien : *.7z         Optionen: /TEE /DCOPY:DA /COPY:DAT /NP /MAXAGE:1 /R:3 /W:100   --------------
05.
----------------------------------------------------------------                           1    \\test1\backup\             Neuer
06.
  610643        dbbak.7z  ------------------------------------------------------------------------------             Insgesamt   KopiertÜber
07.
sprungenKeine Übereinstimmung    FEHLER    Extras Verzeich.:         1         0         0         0         0         0   Dateien:
08.
1         1         0         0         0         0     Bytes:   596.3 k   596.3 k         0         0         0         0    Zeiten:   0:00
09.
:00   0:00:00                       0:00:00   0:00:00   Geschwindigkeit:             7828756 Bytes/Sek. Geschwindigkeit:             447.965
10.
 Megabytes/Min.    Beendet: Donnerstag, 11. Oktober 2018 16:39:59
Das Skript generiert eine E-Mail, wo u.a. auch aufgeführt werden soll, wie lange der Kopiervorgang gedauert hat. Das soll durch die Subtraktion der Startzeit von der Endzeit passieren, welche beide aus der Variable rausgezogen werden sollen. Im alten Skript ist der Block 1:1 auch so vorhanden und funktioniert einwandfrei.

Hat jemand eine Idee?

VIelen Dank schonmal im Voraus.

LG Stephan
Mitglied: 137443
11.10.2018, aktualisiert um 17:18 Uhr
'Gestartet: (.*)'
Das ist dein Regex der das Datum capturen soll, fällt dir da nichts auf?
Genau du erfasst zu viel für das Datum (deswegen meckert auch die ParseExact Funktion weil da eben Daten hinter dem Datum sind die es nicht interpretieren kann, dein Log zeigt es dir ja das hinter dem Datum noch ohne Zeilenumbruch kommt:
    Quelle : \\test1\backup\      Ziel : \\NA
, also Regex zuverlässig anpassen das er nur auf Datumswerte passt, btw. das Startdatum braucht man ja eigentlich nicht auslesen das kennt man ja du startest es ja selbst ein get-date hätte also gereicht .

Gruß l
Bitte warten ..
Mitglied: diemilz
11.10.2018 um 19:23 Uhr
Was mich wundert, dass es in der selben Konstellation in der alten Umgebung noch funktioniert hat und die alte Umgebung läuft auf dem gleichen Server. Das Skript habe ich nicht geschrieben, es stammt von unserem alten IT Dienstleister, der allerdings keinerlei Doku darüber erstellt hat. Ist aber ne andere Geschichte.

Mit dem get-date hast du mich aber auf eine interessante Spur gebracht. Ich teste das morgen mal aus. Idealerweise wäre es halt, Start- und Endzeit aus der Robocopy-Ausgabe für die Berechnung zu nehmen, so wie es im alten Konstrukt auch läuft.

Ich melde mich, sobald ich es getestet habe. Vielen Dank schonmal für den Tipp.
Bitte warten ..
Mitglied: diemilz
12.10.2018 um 08:28 Uhr
Ich habe jetzt mal versucht, das mit get-date umzusetzen. Grundsätzlich funktioniert das auch, aber die Ausgabe ist total vermurkst. Das Ganze sieht jetzt wie folgt aus:

01.
$robostart = Get-Date
02.
robocopy ..........
03.
$roboend = Get-Date
04.
$robospantmp = New-Timespan -Start $robostart -End $roboend
05.
 
06.
$robospan = "($robospantmp.Hours):($robospantmp.Minutes):($robospantmp.Seconds)"
Die Ausgabe von New-Timespan ist diese:

01.
Days              : 0
02.
Hours             : 0
03.
Minutes           : 0
04.
Seconds           : 11
05.
Milliseconds      : 899
06.
Ticks             : 118990535
07.
TotalDays         : 0,00013772052662037
08.
TotalHours        : 0,00330529263888889
09.
TotalMinutes      : 0,198317558333333
10.
TotalSeconds      : 11,8990535
11.
TotalMilliseconds : 11899,0535
Die Ausgabe der Variable $robospan ist aber diese hier:

01.
(00:00:11.8990535.Hours):(00:00:11.8990535.Minutes):(00:00:11.8990535.Seconds)
Das scheint PowerShell gar nicht wirklich zu interessieren, welche Werte ich abfrage. Oder habe ich wieder einen fundamentalen Denkfehler drin?
Bitte warten ..
Mitglied: 137443
12.10.2018 um 09:11 Uhr
Oder habe ich wieder einen fundamentalen Denkfehler drin?
Jupp.
Bitte warten ..
Mitglied: diemilz
17.10.2018, aktualisiert um 09:03 Uhr
Ok. Hab den Fehler gefunden, bei $robospan habe ich die Dollarzeichen im Aufbau der Variable vergessen. Jetzt bekomme ich die korrekte Ausgabe angezeigt.

Jetzt habe ich ein weiteres Problem:
Das gleiche Skript liest aus einer XML-Datei aus, welche Remote-Lokationen es gibt und welche Kassen dort vorhanden sind. Die Datei sieht wie folgt aus:

01.
<?xml version="1.0" encoding="utf-8"?>
02.
 
03.
<BackupConfig>
04.
  <Markt ID="10409">
05.
    <description>Lokation I</description>
06.
	<pos>M</pos>
07.
	<pos>S</pos>
08.
	<fileSpec>*.7z</fileSpec>
09.
  </Markt>
10.
  <Markt ID="10410">
11.
    <description>Lokation II</description>
12.
	<pos>M</pos>
13.
	<pos>S</pos>
14.
	<fileSpec>*.7z</fileSpec>
15.
  </Markt>
16.
  <Markt ID="10411">
17.
    <description>Lokation III</description>
18.
	<pos>M</pos>
19.
	<pos>S</pos>
20.
	<fileSpec>*.7z</fileSpec>
21.
  </Markt>
22.
</BackupConfig>
Das PowerShell-Skript soll jetzt jeden Markt (<Markt ID> durchgehen und darin jede Kasse <pos> sichern. Dazu habe ich zwei foreach-Loops gebaut:

01.
foreach($markt in $xmlfile.BackupConfig.Markt) {
02.
        Write-Host ("[{0}] {1} - {2}" -f $(Get-Date -Format u), $markt.ID, $markt.description) -ForegroundColor Yellow 
03.
        $result_lines[$markt.ID] = @{}
04.
        $result_lines[$markt.ID]["description"] = $markt.description
05.
        foreach($postype in $xmlfile.BackupConfig.Markt.pos) {
06.
                $pos = $($markt.ID+"-"+$postype)
07.
                $posbackuppath = $("\\"+$pos+"\Backup")
08.
                $result_lines[$markt.ID]["pos"] = $markt.BackupConfig.Markt.pos
09.
                 If (!(Test-Connection -ComputerName $pos -Count 2 -Quiet)) {
10.
                        Write-Host "PoS"$pos" not available. Proceeding to next PoS or location."
11.
                        continue
12.
                 }
13.
                do stuff
14.
        }
15.
}
Das Skript tut nicht ganz, was es soll. Es geht jede Markt ID durch und liest dort jede Kasse aus, aber immer über die gesamte XML-Datei. Im obigen Beispiel habe ich zwei Kassen pro Markt, drei Märkte mit insgesamt sechs Kassen. Ich bekomme nun aber pro Markt alle sechs Kassen abgearbeitet. Wie muss ich den zweiten foreach-Loop setzen, damit ich nur die Kassen pro Markt abgearbeitet bekomme?

Im Prinzip möchte ich einfach nur jeden pos-Eintrag pro Markt bearbeitet haben, nicht pro Markt jeden pos-Eintrag der Datei.
Bitte warten ..
Ähnliche Inhalte
Windows Userverwaltung
Fehlermeldung Powershell
gelöst Frage von 121103Windows Userverwaltung17 Kommentare

Hi zusammen, ich möchte im AD-Modul für Powershell die Telefonnummer einer OU von extAttr7 & extAttr8 in die OfficePhone ...

Windows Server

Powershell + Import VM bringt Fehlermeldung

gelöst Frage von SupidoWindows Server

Hallo zusammen, ich bin etwas verwirrt, da ein PSScript mal funktioniert und mal nicht. Untenstehender Code ist teil eines ...

Batch & Shell

Powershell - Verwendung von PSSession erzeugt Fehlermeldung

gelöst Frage von DaniBatch & Shell2 Kommentare

Hallo liebe Kolleginnen und Kollegen, vor der Umstellung auf Exchange 2016 bietet sich es an diverse Skripte zu überabeiten. ...

Windows Netzwerk

Windows Netzlaufwerk mit der PowerShell verbinden - Fehlermeldung, dass Netzwerkkennwort ist falsch

gelöst Frage von mr.kkevWindows Netzwerk2 Kommentare

Guten Abend zusammen Da ich ein Neuling in PowerShell bin, bringt mich folgendes Problem um den Verstand. Ich möchte ...

Neue Wissensbeiträge
iOS
WatchChat für Whatsapp
Tipp von Criemo vor 14 StundeniOS

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor !!!
Tipp von Criemo vor 1 TagiOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Off Topic
Avengers 4: Endgame - Erster Trailer
Information von Frank vor 3 TagenOff Topic2 Kommentare

Ich weiß es ist Off Topic, aber ich freue mich auf diesen Film und vielleicht geht es anderen hier ...

Webbrowser
Microsoft bestätigt Edge mit Chromium-Kern
Information von Frank vor 3 TagenWebbrowser5 Kommentare

Microsoft hat nun in seinem Blog bestätigt, dass die nächste Edge Version kein EdgeHTML mehr für die Darstellung benutzen ...

Heiß diskutierte Inhalte
Exchange Server
Exchange Server 2010: Keine Eingehenden E-MAils
gelöst Frage von gabeBUExchange Server17 Kommentare

Hallo Zusammen Ich habe das kurzen auf dem Exchange 2010 Server das Problem, dass ich keine externen E-Mails mehr ...

Server
Server in zwei verschiedene Netzwerke einbinden
gelöst Frage von BennyFServer13 Kommentare

Hallo zusammen, bei uns im Haus sind im Erdgeschoss die Geschäftsräume und ab dem 1. Stock sind unsere privaten ...

Windows Netzwerk
Kerio. Kann keine Mails empfangen aber senden. Wer ist schuld. Kerio oder Windows domäne?
Frage von frosch2Windows Netzwerk13 Kommentare

Hallo, es existiert ein Problem bei uns mit dem mailen. Alle bestehenden Nutzer können mailen. Raus wie rein. Neuen ...

Netzwerkmanagement
Ticketsystem für eine Kommune gesucht
gelöst Frage von akovisNetzwerkmanagement11 Kommentare

Ich suche aktuell ein Ticketsystem für eine Kleinstadt von 13000 Einwaohnern. Das System soll alle Anfragen aus verschiedenen Kanälen ...