Jump to content

rt1970

Members
  • Gesamte Inhalte

    332
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von rt1970

  1. Danke mikro. Meine Befürchtung ist, dass nach dem verschieben das Postfach gar nicht mehr zu gebrauchen ist... Ich versuche es trotzdem jetzt. Ich habe ja noch die pst
  2. Hallo CJ! Heute ist doch Pfingsten!? Danke für Deinen Vorschlag! Also: die 10GB .pst hab ich ohne Fehler exportieren können. Postfach ist auch auf Unlimited gesetzt. Was soll das bringen, wenn ich das Postfach in eine andere Datenbank schiebe? Ich kann mit der Meldung "Die Zeile kann basierend auf der Bedingung nicht gefunden werden" überhaupt nichts anfangen...
  3. Hallo zusammen! Seit Kurzem passiert folgendes: wenn ich einen speziellen Benutzer zu einem Termin einlade, bekomme ich folgenden Unzustellbarkeitsbericht: Remote Server returned '554 5.2.0 STOREDRV.Deliver.Exception:StoragePermanentException.MapiExceptionDatabaseError; Failed to process message due to a permanent exception with message Die Zeile kann basierend auf der Bedingung nicht gefunden werden. 16.55847:92010000, 17.43559:540400009A000000000000000700000000000000, 4.32881:54040000, 0.50035:00000000, 4.64625:54040000, 20.52176:010FCB8909000010010FCB89, 20.50032:010FCB897917F01F02000000, 0.50128:07000000, 255.1494:80030400, 4.53192:06FCFFFF, 4.64456:54040000, 255.1750:80030400, 255.1494:00000000, 4.53192:06FCFFFF, 4.64456:54040000, 255.1750:010FCB89, 0.50288:010FCB89, 4.23354:54040000, 0.35180:BB178E6A, 0.25913:0A000000, 255.21817:54040000, 0.29726:9E000000, 4.18462:54040000 [Stage: OnPromotedEvent][Agent: Conversations Processing Agent]' Emails funktionieren aber ohne Probleme! Der Exchange 2016 Standard läuft auf einem Server 2016 Standard. Alles aktuell gepatcht und sogar CU23 + Update installiert. New-MailboxRepairRequest -Mailbox "MailboxUsername" -CorruptionType ProvisionedFolder,SearchFolder,AggregateCounts,Folderview des Users habe ich auch schon ohne Erfolg durchgeführt. Was tun? Grüße
  4. @MurdocX ich denke auch, dass sich das im Kreis dreht. Alle Hinweise wurden gegeben. Weitere Fragen? Nein. Erst einmal nicht. Danke!
  5. Ja, das nehme ich an. Warum jetzt Paranoia schieben, wenn das Ding seit "Anfang der Aufzeichnung" läuft? Zur Ursachenfindung trägt eine Neuinstallation nicht bei. Nein. Keine externen Tools außer die oben gelisteten. Auch nicht Remote. Sollte das tatsächlich eine Schadsoftware sein, könnte sich diese genauso im Active Directory eingenistet haben...
  6. Da hast Du auch wieder recht. Allerdings "brennt" dann jetzt nicht die Luft. Ob man bei den Herstellern eine qualifizierte Antwort bekommt ala "erstellt ihr 2x täglich im Temp-Ordner eine script.ps1?" bekommt ist fragllich. Man kann doch schon froh sein, wenn man überhaupt eine Antwort bekommt... Ich werde jetzt ein Testsystem weitestgehend ohne Inet auf einer VM aufsetzen und schauen was passiert. Hatte gehofft, dass mal jemand auf seinen Exchange mit ähnlicher Konstellation im Eventlog schauen könnte...
  7. Wer sagt, das es Schadsoftware ist? Wenn das schon seit einem Jahr läuft ist hier Paranoia berechtigt? Nein, ich kann den Kasper nicht deinstallieren und dann 1-2 Tage warten - bei der Masse an Viren die rein kommen wäre das eine Katastrophe. Täglich 5-15 Mails mit .pdf.exe oder .iso.exe z.B. Trotzdem Danke an Alle für Eure Hinweise!
  8. Der Exchange wäre vielleicht schon wieder neu aufgesetzt. Aber im Active Directory bliebe das schlechte Gefühl weiterhin, solange ich nicht weiß wer der Auslöser des Scriptes war/ist. Backup (Acronis) und Virenscanner (Kaspersky) PS: auch am 19.03.2020 (Eventlog Anfang) wurde das Script schon ausgeführt.
  9. Danke testperson! So habe ich es auch interpretiert. Klingt nach Kaspersky for Mailserver oder Acronis... Das script wurde schon seit 20.11.2020 ausgeführt. Evtl. sogar schon vorher. Bin noch nicht weiter gekommen zu recherchieren. Bevor ich in Paranoia verfalle, möchte ich Kaspersky, Acronis, Teamviewer, CertAssistant und Popcon ausschließen. Mehr läuft auf dem System nicht. Bei einem anderen Exchange 2016-Server wird das Script in meinem User-Temp-Folder ausgeführt. Weitere Auffälligkeiten sind nicht vorhanden. Auch die Tools bzgl. Exchange-Katastrophe zeigten keine Auffälligkeiten (bis auf Kaspersky-Archive kscdat.zip_0 und ...1)
  10. Danke für die Ausführungen. Eine Frage hätte ich noch: Was macht das Script?
  11. Und dann? Was willst Du mir damit sagen? Bis auf die fragwürdigen Kommentarzeilen sehe ich eine Abfrage des Exchange, was auch vom Kaspersky kommen könnte. Soll ich jetzt ein Auto verschrotten, nur weil eventuell ein Nagel im Reifen steckt?
  12. Sorry Nils, dass es so rüber kam. Bevor ich alles "Platt" machen muss brauche ich wenigstens 80%ige Gründe. Leider verstehe ich nicht, was das Script überhaupt macht. Kaspersky for Exchange ist ja auch noch aktiv und "tobt" sich in C:\Windows\Temp aus...
  13. Naja.... Soooo eindeutig ist das ja nicht (wie ich finde). Die Übersetzung kam ja NUR zustande, weil ich die .ps1 in Word geöffnet hatte und mit einer Sprache, die wie Chinesisch aus sah... Dann ab zum Google-Übersetzer. Ob der Kommentar in der .ps1 tatsächlich korrekt übersetzt ist weiß keiner. Ich finde auch keine weiteren Anomalien. Auch keine unklaren Aufgaben.
  14. @NilsK Die Idee klingt plausibel - aber... Hoffnung stirbt zuletzt, das System nicht neu zu installieren. Kann man raus bekommen, welcher Prozess/Datei die Datei erstellt? Oder gibt es einen Befehl, der ALLE Task´s ausliest? Was macht die script.ps1?
  15. Hallo! Im Zusammenhang mit der Exchange-Katastrophe forscht man ja tiefer. Dabei fiel mir in der Ereignisanzeige auf, dass hin und wieder Powershell gestartet wurde. EventLog: Der Anbieter "Registry" ist Started. Details: ProviderName=Registry NewProviderState=Started SequenceNumber=1 HostName=ConsoleHost HostVersion=5.1.14393.3866 HostId=76d14a53-5841-4ccd-a07a-df1836051da0 HostApplication=C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive -NoLogo -File C:\Windows\TEMP\xfow3wj4.55h\script.ps1 EngineVersion= RunspaceId= PipelineId= CommandName= CommandType= ScriptName= CommandPath= CommandLine= Da sind mehrere Einträge. Erst Anbieter Registry, dann Alias, dann Invironment, dann FileSystem, dann Function, dann Variable und dann "Der Modulzustand wurde von None in Available geändert." Natürlich war die nicht mehr zu finden, so dass ich den Ordner überwachen lassen habe und sämtliche Dateien bei Erstellung in einen Ordner kopiert werden. In der script.ps1 steht dann: $ErrorActionPreference = 'Stop'; Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010; @(@(Get-MailboxDatabase | ?{$_.Server.ToString() -eq 'DC'}) | %{Get-Mailbox -Database $_ -ResultSize Unlimited -RecipientTypeDetails UserMailbox,LinkedMailbox,SharedMailbox,RoomMailbox,EquipmentMailbox}).Count ein anderes mal stand in einer anderen script.ps1: $ErrorActionPreference = 'Stop'; Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010; Set-StrictMode -Version Latest if ($args.Length -ne 2) { throw "Output file paths expected as a script arguments." } $outputFilePath = $args[0] $skippedFoldersFilePath = $args[1] $DeleteAllRight = [int][Microsoft.Exchange.Management.StoreTasks.MailboxFolderMemberRights]::DeleteAllItems $EditAllRight = [int][Microsoft.Exchange.Management.StoreTasks.MailboxFolderMemberRights]::EditAllItems $ReadAllRight = [int][Microsoft.Exchange.Management.StoreTasks.MailboxFolderMemberRights]::ReadItems $FolderVisibleRight = [int][Microsoft.Exchange.Management.StoreTasks.MailboxFolderMemberRights]::FolderVisible $RequiredRights = $DeleteAllRight -bor $EditAllRight -bor $ReadAllRight -bor $FolderVisibleRight # Ð”Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… паблик фолдеров вызов FindItems иногда приводит к иÑключению: # "The specified object was not found in the store". # Причем, например, еÑли положить в такой фолдер поÑÑ‚ и удалить его, то ошибка иÑчезает. # Иногда (но не вÑегда) Ñ‚Ð°ÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° возникает Ð´Ð»Ñ ÐºÐ¾Ñ€Ð½ÐµÐ²Ð¾Ð³Ð¾ фолдера IPM_SUBTREE. # ЕдинÑтвенное предположение, что EWS в завиÑимоÑти от каких-то уÑловий Ð´Ð»Ñ Ð¿ÑƒÑтого фолдера # в ответ на FindItems может вернуть либо пуÑтую коллекцию Ñлементов, либо приведенную выше ошибку. # ПоÑтому иÑключаем из ÑÐºÐ°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑƒÑтые каталоги. function IsNotEmpty($publicFolder) { $anyPublicFolderItemsExist = $(Get-PublicFolderStatistics $publicFolder).ItemCount -ne 0 if (! $anyPublicFolderItemsExist) { AppendEntryToFile $skippedFoldersFilePath $(FormatSkippedEntry $publicFolder "No items") } return $anyPublicFolderItemsExist } function HasValidUser($publicFolderPermission) { $publicFolderUserTypeName = $publicFolderPermission.User.GetType().Name if ($publicFolderUserTypeName -ne "MailboxFolderUserId") { Write-Host "WARNING: unexpected publicFolderUserTypeName: $publicFolderUserTypeName" return $false } return ($publicFolderPermission.User -ne $null) -and ($publicFolderPermission.User.ADRecipient -ne $null) } function ContainsRequiredRights($accessRights) { [int]$effectiveRights = 0 foreach ($right in $accessRights) { $effectiveRights = $effectiveRights -bor [int]$right } return ($effectiveRights -band $RequiredRights) -eq $RequiredRights } function GetUserWithRequiredRights($publicFolder) { $permission = Get-PublicFolderClientPermission $publicFolder | ? { $(HasValidUser $_) -and $(ContainsRequiredRights $_.AccessRights) } | Select -First 1 if($permission -eq $null) { AppendEntryToFile $skippedFoldersFilePath $(FormatSkippedEntry $publicFolder "Wrong permissions") } return $permission } function FormatSkippedEntry($publicFolder, $skipReason) { $fullPath = $publicFolder.FolderPath.ToString() $publicFolderMailbox = Get-Mailbox -PublicFolder $publicFolder.ContentMailboxGuid.ToString() $mailboxName = $publicFolderMailbox.PrimarySmtpAddress $storeName = $publicFolderMailbox.Database return "$fullPath`n$mailboxName`n$storeName`n$skipReason" } function GetEntry($publicFolderPermission) { $ownerSid = $publicFolderPermission.User.ADRecipient.Sid $publicFolder = Get-PublicFolder $publicFolderPermission.Identity $entryId = $publicFolder.EntryId $fullPath = $publicFolder.FolderPath.ToString() $publicFolderMailbox = Get-Mailbox -PublicFolder $publicFolder.ContentMailboxGuid.ToString() $mailboxName = $publicFolderMailbox.PrimarySmtpAddress $storeName = $publicFolderMailbox.Database return "$entryId`n$ownerSid`n$fullPath`n$mailboxName`n$storeName" } function AppendEntryToFile($outputFilePath, $entry) { [System.IO.File]::AppendAllText($outputFilePath, "$entry`n`n", [System.Text.Encoding]::Unicode) } New-Item -Force -ItemType file $outputFilePath $publicFolders = $null try { $publicFolders = Get-PublicFolder -Recurse } catch { if ($_.CategoryInfo.Reason -eq 'ObjectNotFoundException') { Write-Host "There are no public folder mailboxes." return } throw } $publicFolders | ? { IsNotEmpty $_ } | %{ GetUserWithRequiredRights $_ } | ? { $_ -ne $null } | %{ AppendEntryToFile $outputFilePath $(GetEntry $_) } Die merkwürdigen Kommentarzeilen machen mich stutzig. Sehen so CHINESISCH aus... Ich hab es bei google übersetzen lassen: Hat jemand eine Idee dazu? Kaspersky Endpoint, MSERT und Testproxylogon haben nichts auf dem System gefunden... script.ps1.txt
  16. Damit scheint es zu funktionieren. Nachdem ich eine Richtlinie mit Anmeldescript ClnPrt.cmd erstellt habe passiert beim anmelden folgendes: erst wird der Standarddrucker ausgelesen, dann ALLE Netzwerkdrucker gelöscht und durch gpupdate die zugewiesenen Drucker verbunden. Anschließend wird der der anfängliche Standarddrucker gesetzt. Damit diese Prozedur nicht jedes mal beim anmelden ausgeführt wird, habe ich eine Datei PrtClean.log im Temp-Folder des Users erstellt. Ist diese vorhanden wird gleich beendet, da dieses Profil schon "gereinigt" wurde. Hier die Batch ClnPrt.cmd @echo off If exist %temp%\PrtClean.log goto :EOF if not "%minimized%"=="" goto :minimized set minimized=true start /min cmd /C "%~dpnx0" set minimized= goto :EOF :minimized echo Detecting Default Printer ... FOR /F "tokens=1-3* skip=2 delims==" %%A in ('wmic printer where "default=True" get name^,servername^,sharename /value ' ) do ( setlocal EnableDelayedExpansion set DefaultPrinter%%A=%%B ) echo Default Printer: %DefaultPrinterName% delprt.vbs gpupdate /target:user RUNDLL32 printui.dll,PrintUIEntry /y /n "%DefaultPrinterName%" echo Clean-OK -> %temp%\PrtClean.log und dazu die DelPrt.vbs zum löschen aller Netzwerkdrucker: Dim net Set net = WScript.CreateObject("WScript.Network") RemNetPrinter() FUNCTION RemNetPrinter() Dim oPrinters Set oPrinters = net.EnumPrinterConnections For i = 1 to oPrinters.Count Step 2 IF instr(oPrinters.Item(i), "\\") = 1 THEN net.RemovePrinterConnection oPrinters.Item(i), true, true END IF Next END FUNCTION Alles aus div. Foren zusammengestellt. Bin auf Montag gespannt ?
  17. Ich möchte hier keine Grundsatzdiskussion anfangen. Die Leute sollen ihren Job machen und ich meinen. Und ja - ich verhätschel die Leute - weil ich es (das meiste) kann. Powershell ginge sicher auch - muss nur mal schauen, wie wie es ging eine unsignierte .ps1 ausführen zu lassen... Überlegung wäre: 1. Standarddrucker auslesen und merken 2. alle (Netzwerk-) Drucker löschen 3. gpupdate /force /target:user
  18. Ich scheitere grad hier: For /F "Tokens=4 delims=\" %%I In ('reg query HKCU\Printers\Connections ^|find /I "Printer-A"') DO GOTO Ende1 ELSE rundll32 printui.dll PrintUIEntry /dn /q /n "Printer-A" Ende1: For /F "Tokens=4 delims=\" %%I In ('reg query HKCU\Printers\Connections ^|find /I "Printer-B"') DO GOTO Ende2 ELSE rundll32 printui.dll PrintUIEntry /dn /q /n "Printer-B" :Ende2 Durchsuche Registry, wenn gefunden gehe weiter (oder hier zu Ende1 bzw. 2) ansonsten - wenn nicht gefunden dann auch nicht existent, also löschen... Ideal wäre hier wenn er eine txt-Datei mit den Namen der bekannten Drucker durchsuchen würde... !!!Funktioniert aber nicht, weil er alle anderen existierenden Drucker in der ersten Zeile schon löschen würde.!!! Es müssten 2 Tabellen werden: 1. lokale Drucker aus Registry und 2. existierende freigegebene Drucker Nur wenn es 2. nicht in 1. gibt, dann lösche diesen Drucker. Soweit reichen meine DOS-Kenntnisse dann doch nicht. ? Logdatei... Naja... Hätte es schon ganz gern zu Montag fertig, so dass das Script gleich Mo früh greift. Alle Drucker löschen und neu anlegen (lassen) per GPP -> ungern, da dann 90% der Leute "nicht drucken können", weil sie nicht wissen, was ein Standarddrucker ist und wie man den umstellt... Ähnlich wie bei mir: ich will das Essen auf dem Teller - wie es zubereitet wird hab ich keine Ahnung... Darum auch die Bereinigung. Wird ja auch ein super Script für die Zukunft, wenn mal Drucker entfernt werden...
  19. Danke für den Link. Der beschreibt genau diese Umstellung. Und richtig: vor 4 Jahren und 6 Tagen war der besagte Patchday ? -> herzlichen Glückwunsch ? Das ist aber nicht mehr mein Problem nachdem ich mich nochmals in diese Änderung eingelesen hatte. Danach habe ich entschieden, dass ich eine Richtlinie mit allen Druckern anlege und jeden Drucker über Zielgruppen filtere. Geht - wie ich finde - super, wenn man entsprechende Security-User-Gruppen anlegt (pro Drucker eine), dann hält sich der Aufwand für die Einrichtung in Grenzen. Bleibt nur noch: meinen Murks zwischendurch auf den Clients wieder zu bereinigen... ?
  20. Mir gefällt die Art wie Du denkst! Der Ansatz ist nicht schlecht! Bekannt sind ja die Drucker, die es gibt und alle anderen Netzwerkdrucker auf dem PC können gelöscht werden... Danke! Der Ansatz klingt Super!
  21. @tesso Genau das meinte ich! War doch schon so lange her? Wie die Zeit vergeht... Oder belässt die Rechte auf Standard (wie ich jetzt)...
  22. @BOfH_666 Das kann gut sein. Aber alle Abfragen die ich bisher gemacht habe deuteten nicht darauf hin, dass es Unterschiede gibt. Status z.B. war bei beiden identisch @Sunny61 Ich hatte mich schon weiter oben ☝ korrigiert. MS hatte damals die Berechtigungen in der GPP auf Druckerzuweisungen geändert. Ich hatte derzeit die Druckerzuweisungen mit dem Sicherheitsfilter der Richtlinie bewerkstelligt dann dort nur die entsprechenden User eingetragen und "authentifizierten Benutzer" gelöscht. Das ging dann nicht mehr und die Drucker wurden nicht mehr zugewiesen.
  23. Das habe ich als erstes deaktiviert... Verwirrt die Leute nur, da Anwendungen auf den Standard-Drucker drucken. Wenn der sich ändert (wollen) die Leute nicht wissen wie man den Standard-Drucker definiert... Und mich verwirrt es auch, weil ich (noch) keine Ahnung habe, wie das funktionieren soll und ich darauf Einfluss nehmen kann... ? Gibt es tatsächlich keine Möglichkeit "Netzwerkdrucker-Leichen" zu entsorgen (zu lassen)?
  24. @testpersonHatte ich auch gehofft. Aber der Drucker hat nicht den Status "Offline".. @BOfH_666Damit ist auflisten aller Drucker möglich, aber mir fehlt der Status "Drucker nicht gefunden" von Windows 10... Ich muss mich korrigieren. Habe es jetzt nach langer Zeit mit der Benutzer-GPP probiert. Mein Denkfehler war die Filterung. Die Richtlinie braucht den Zugriff "authentifizierte Benutzer". Da ich aber nur die entsprechenden User hier eingetragen hatte, war der Eintrag für die Drucker anscheinend wirkungslos. Die Filterung der User übernehme ich nun über Zielgruppen, was recht umständlich ist jeden User einzeln einzutragen und mit "Or" zu verknüpfen... Bleibt nun noch die Bereinigung der alten Netzwerkdrucker mit dem Problem des Standarddruckers.
  25. Hallo zusammen! Nachdem Microsoft 2017(?) in den GPO´s die Zuweisung der Drucker per User gestrichen hat, musste ich Scripte anlegen, die mir die Netzwerkdrucker verbinden. (oder habe ich was verpasst?) Die Richtlinie unter Computer funktioniert leider nicht für Drucker ohne IP (PDF-Creator z.B.). Leider musste ich den Druckernamen ein paar mal ändern, so dass sich auf den Clients mehrere Netzwerk-Drucker befinden, die den Freigabenamen nicht mehr finden. Diese würde ich gerne automatisch entfernen lassen ohne dass dabei der Standarddrucker gelöscht wird (es sei denn es ist ein Offline-Drucker). Also ich möchte nach Möglichkeit nicht ALLE Drucker zuerst löschen um dann das Script abarbeiten zu lassen. Ich dachte es mir so: durchsuche alle lokalen Netzwerkdrucker und finde die mit Status "Drucker nicht gefunden, keine Verbindung" - es sei denn es ist ein (ausgeschalteter) USB-Drucker... Diese lösche mir bitte. Bis jetzt habe ich noch keine WMI-Abfrage gefunden, die mir diesen Status ausgeben könnte... Verbunden werden die Drucker via Anmeldescript mit rundll32.exe printui.dll,PrintUIEntry /in /n "\\Server1\Printer1" Als letzte Idee wäre ein Script, welches sich erst den Standarddrucker merkt, dann alle Netzwerkdrucker löscht, neu verbindet und den Standarddrucker wieder setzt. Da aber jeder zugewiesene Drucker ein eigenes Anmeldescript bekommen hat ist das eher Kontraproduktiv. Gibt es hierfür eine Lösung? Grüße René
×
×
  • Neu erstellen...