Jump to content

rt1970

Members
  • Gesamte Inhalte

    332
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von rt1970

  1. 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...

  2. 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

  3. 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...

  4. 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...

  5. Zitat

    Solange wie wir hier schon diskutieren hättest du die Maschine schön längst neu aufgesetzt und hättest kein schlechtes Gefühl mehr. 

    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.

     

    Zitat

    Die hatte ich auch im Verdacht, aber andererseits wofür sollte man das in den Anwendungen brauchen?

    Backup (Acronis) und Virenscanner (Kaspersky)

     

    PS: auch am 19.03.2020 (Eventlog Anfang) wurde das Script schon ausgeführt.

  6. 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)

  7. 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.

  8. 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:

    Zitat

    # 脨 鈥 澝 惵 幻 懧? 脨 Lu 脨 潞 潞 潞 潞 焨 舥 毭 惵 戋 戋 偓 毭? €?潵 罵罵 焵 潵 焵 無 焨 樵 焵 焨 焨 焨 潵 焨 焨 焨 焨 潵 焨 焨 焨 惵 惵 惵 惵 惵 惵 惵 愨 愨 惵 惵 愨 惵 脨 脨 脨 脨 脨lu So finden Sie heraus, was zu tun ist? FindItems So suchen Sie lange? FindItems So suchen Sie lange? FindItems Bestechungsreparaturen # "Das angegebene Objekt wurde nicht im Store gefunden". # 脨 鄨 修 钪  惵 惵 惵 € : 惵 得 惵?脨 得 惵? Stimmt es, dass Sie es reparieren können? Sie können es für eine lange Zeit reparieren? Sie können es für eine lange Zeit reparieren? Es ist eine lange Zeit, um es zu reparieren. Es ist zu schwierig, den Esel zu reparieren. Wie man es repariert das Bestechungsgeld und reparieren es? Sie können es reparieren, und es ist eine Schande, dass Sie es reparieren können? Es ist eine Schande, dass Sie es reparieren können. Es ist eine Schande. €? # Ji Yun Ji Lu Ji töten Ji Lu Ji Lu Ji Gefangener (Ji Lu Ji töten Ji Lu Ji Lu Ji Krupp Reparatur Biji Lu Ji Lu Ji Lu Ji Gefangener) Reparatur Holmium Nuodie Bedauern Krawatte Gut Sterben Bedauern Nuo? Cu Schlachtreparatur Xiecu Bestechung Was ist der Unterschied zwischen dem Schlachten und dem Schlachten? Das Schlachten des Schlachtens und das Schlachten des Schlachtens und das Schlachten des Schlachtens, das Schlachten des Schlachtens, das Schlachten des Schlachtens, das Schlachten des Schlachtens, das Schlachten des Schlachten, das Schlachten des Schlachtens, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, Das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, die Schrägreparatur für eine lange Zeit, die Illusion und die Fehler führen zu IPM_SUBTREE. # Ji holmium ⒚ Diecidiegai Die Jiaonuonijian € Nuodiecaidie Detiejiaodie Jiaodiejiudie? Culvxiukang  Die war Tiecidieke Tiejiutiehuan Diejiudiedu Tiedetiejiao Was sollten Sie tun? Kouxiubixiu holmium Nuotie Jiutiechentie? Holmium Chidiejiutie reparieren Illusion und Frustration # 脨 脨 脨 reparieren 鈥 毭 惵 惵 惵 惵 鈥? 鈥? 脨 Lu 脨 FindItems erfassen Ich bin kein Dummkopf, ich bin kein Dummkopf, ich bin kein Dummkopf, ich bin kein Mann, ich ' Ich bin kein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann Sechseckiger Lack Lack Lack Lack Reparatur Moos. Was soll ich tun? Der Esel repariert die Reparaturen, die Reparaturen, die Reparaturen, die Reparaturen, die Reparaturen, die Schaufeln, die Reparaturen in Gefangenschaft, die Sorgen, die Sorgen und das Chaos für eine lange Zeit?

     

    Hat jemand eine Idee dazu? Kaspersky Endpoint, MSERT und Testproxylogon haben nichts auf dem System gefunden...

    script.ps1.txt

  9. 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 ?

  10. 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

  11. 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...

  12. 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... ?

  13. vor 4 Stunden schrieb BOfH_666:

    Vielleicht fängst Du's falsch an. Wenn Du alle lokalen und korrekt verbundenen Netzwerkdrucker identifizieren kannst, dann muss der Rest ja zu den "Leichen" gehören .... oder?

    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!

  14. @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.

  15. vor 2 Stunden schrieb BOfH_666:

    Bei einem meiner Kunden ist die Windows 10 Standard-Einstellung aktiv - "Windows verwaltet den Standard-Drucker". Da gibt es dann quasi keine Eigenschaft "Standard-Drucker", die man auslesen oder beeinflussen könnte.  Nur so als Hinweis.  ;-) 

    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)?

  16. @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.

  17. 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...