Zum Inhalt wechseln


Foto

[Powershell] Netzwerkdrucker entfernen


  • Bitte melde dich an um zu Antworten
5 Antworten in diesem Thema

#1 roccomarcy

roccomarcy

    Newbie

  • 77 Beiträge

 

Geschrieben 06. November 2017 - 07:02

Guten Morgen,

 

ich habe ein abgewandeltes Skript aus dem Technet gefunden, welches mir Netzwerkdrucker, die auf dem Server nicht mehr verfügbar sind, anzeigt.

Ich würde diese Drucker auch gern automatisch lösen, leider komme ich mit dem Skript nicht weiter.

Kann mir jemand ggf. Hilfestellung geben oder einen nötigen Hinweis, wie ich das Skript modifizieren muss?

#requires -Version 2.0

Function Test-OSCPrinter
{
	Try
	{	
		Get-WmiObject -Class Win32_Printer -ErrorAction Stop | Where {$_.Network} | Select-Object Name,
		@{Name="Verbindungsstatus";Expression={$PrinterName = $_.Name; 
											Try
											{
												$NetworkObj = New-Object -ComObject WScript.Network
												$NetworkObj.AddWindowsPrinterConnection("$PrinterName")
												"Verbunden"
											}
											Catch
											{"Nicht verbunden"}}}
	}
	Catch
	{
		Write-Warning "Fehler, läuft der Spooler-Dienst?"
	}
}

Test-OSCPrinter

Die Ausgabe des Skript ist wie folgt:

 

unbenannt82s02.jpg

 

Gruß

 



#2 Cybquest

Cybquest

    Expert Member

  • 1.886 Beiträge

 

Geschrieben 06. November 2017 - 09:14

Evtl. beim Catch einfach ein $_.delete ?


My name is Frank, you can say you to me.

#3 roccomarcy

roccomarcy

    Newbie

  • 77 Beiträge

 

Geschrieben 06. November 2017 - 10:21

Evtl. beim Catch einfach ein $_.delete ?

 

Wie meinst du das?



#4 Cybquest

Cybquest

    Expert Member

  • 1.886 Beiträge

 

Geschrieben 06. November 2017 - 11:18

Nu ja... halt einfach im 1. Catch: 

{

  $_.delete()

  "Nicht verbunden - Objekt gelöscht"

}

 

Oder ggf., wenn man kein $_ mehr hat, so:

(Get-WmiObject -class win32_printer | where-object {$_.Name -eq $PrinterName} ).delete()


My name is Frank, you can say you to me.

#5 marcx2

marcx2

    Junior Member

  • 123 Beiträge

 

Geschrieben 10. November 2017 - 08:20

Kann mir jemand erklären wieso Get-Printer und Get-WmiObject -class win32_printer nur die Lokal installierten Ports auflistet und nicht die Netzwerkdrucker??

Wenn ich das lokal ausführe funktioniert es natürlich, aber auf einem Remote Computer werden nur die Drucker aufgelistet welche keine Netzwerkdrucker sind.

 

Müsste ich hier zuerst eine "New-PsSesssion" auf dem Remotecomputer öffnen und dann den Befehl Get-Printer per Scriptblock übergeben? 


Done: 70-640, 70-642

Next: schauen wir mal :)

#6 BOfH_666

BOfH_666

    Junior Member

  • 145 Beiträge

 

Geschrieben 10. November 2017 - 08:43

Machst Du bitte für ein neues Thema auch einen neuen Thread auf?

 

Wenn Du remote auf einen anderen Computer zugreifst, siehst Du nur die "Umgebung" des Anwenders/Administrators, mit dem Du auf den remote Computer zugreifst. Dieser hat üblicherweise keine Netzwerkdrucker verbunden bzw. es wird beim remote Zugriff nicht das komplette Profile geladen in dem die Netzwerkdrucker verbunden sind.


Bearbeitet von BOfH_666, 10. November 2017 - 08:43.

  • marcx2 gefällt das

live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''