Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

Netzwerkdrucker per vbs auslesen

Frage Entwicklung Batch & Shell

Mitglied: superwasi

superwasi (Level 1) - Jetzt verbinden

11.08.2008, aktualisiert 15:07 Uhr, 13490 Aufrufe, 6 Kommentare

Hallo.

Ich würde gerne wissen, wie ich per Remote alle Drucker, das heisst auch die Netzwerkdrucker, von andren PCs anzeigen lassen kann.

Ich habe ein kleines Script geschrieben, das mir aber nur lokal sämtlichen Drucker anzeigt.

Wenn man die Drucker eines anderen PCs auslesen möchte, werden nur die lokal installierten ausgegeben.


Hier mein Script:


On Error Resume Next
strComputer=inputbox("Bitte geben sie die IP oder den Hostnamen des gewünschten PCs an," _
& "auf dem die Drucker ausgelesen werden sollen!")
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Printer",,48)
For Each objItem in colItems
Wscript.Echo "Name: " & objItem.Name
Next


Könnte mir vielleicht jemand bei diesem Problem helfen?

Danke für eure Antworten im voraus!
Mitglied: colinardo
11.08.2008 um 13:54 Uhr
das sollte gehen ...
01.
strComputer = InputBox("Bitte IP-Adresse des PC's eingeben:","Installierte Drucker abrufen") 
02.
strUsername = InputBox("Bitte Username eines Administrators des Remotesystems eingeben:","Installierte Drucker abrufen") 
03.
strPassword = InputBox("Bitte Password des Administrators eingeben:","Installierte Drucker abrufen") 
04.
Const WbemAuthenticationLevelPktPrivacy = 6 
05.
Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
06.
Set objWMIService = objwbemLocator.ConnectServer(strComputer, "root\cimv2", strUsername, strPassword) 
07.
objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy 
08.
Set objPrinters = objWMIService.ExecQuery("Select * From Win32_Printer") 
09.
 
10.
For Each objPrinter In objPrinters 
11.
	WScript.Echo objPrinter.Name 
12.
Next 
13.
 
14.
 

Das folgende Script benutz ein Array in dem die IP-Adressen der Computer stehen und schreibt die Drucker der jeweiligen Maschine in eine Textdatei:
Das Array ist an die jeweiligen Rechner anzupassen... // Achtung: Der angegebene User muss auf allen PC's Admin-Rechte besitzen. In der Domänenumgebung ist dieser in folgender Form anzugeben: "DOMÄNE\USER"

01.
On Error Resume Next 
02.
Const WbemAuthenticationLevelPktPrivacy = 6 
03.
strUsername = InputBox("Bitte Username eines Administrators des Remotesystems eingeben:","Installierte Drucker abrufen") 
04.
strPassword = InputBox("Bitte Password des Administrators eingeben:","Installierte Drucker abrufen") 
05.
Set fso = CreateObject("scripting.filesystemobject") 
06.
 
07.
strComputers = Array("10.10.1.5","10.10.1.6") 
08.
 
09.
For i = 0 To UBound(strComputers) 
10.
	strComputer = strComputers(i) 
11.
	Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
12.
	Set objWMIService = objwbemLocator.ConnectServer(strComputer, "root\cimv2", strUsername, strPassword) 
13.
	objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy 
14.
	Set objPrinters = objWMIService.ExecQuery("Select * From Win32_Printer") 
15.
	Set txtfile = fso.OpenTextFile("c:\temp\Drucker_von_" & strComputer & ".txt", 2, True) 
16.
	For Each objPrinter In objPrinters 
17.
		txtfile.WriteLine objPrinter.Name 
18.
	Next 
19.
	txtfile.Close 
20.
Next
Bitte warten ..
Mitglied: superwasi
11.08.2008 um 14:18 Uhr
Danke Stofmeister für deine Antwort.

Ich habe nur noch ein Problem.

Ich habe das Tool gerade getested und es ist genau das was ich gesucht habe.

Aber es funktioniert nur wenn ich den aktuell angemeldeten User eintrage.

Wenn ich als User den lokal Admin oder einen Sysacount benutze, bekomme ich immer die Fehlermeldung, dass der Zugriff verweigert wurde.

Wüsstest du vielleicht eine Variante in der es auch mit dem lokal admin funktioniert.

Danke im voraus für deine Antwort.
Bitte warten ..
Mitglied: colinardo
11.08.2008 um 14:23 Uhr
Du musst einen Admin des anderen Rechners angeben und nicht einen lokalen Admin. Eine Variante ohne Password ? das wäre ein großes Sicherheitsloch. Du kannst auf dem anderen PC einen extra Admin anlegen der für solche Zwecke dient. Wenn dieser den gleichen Namen und das gleiche Passwort besitzt dann geht der Zugriff auch mit deinem ersten Script.
Ebenfalls Vorraussetzung ist das auf der anderen Maschine die "Remote Administration" Ausnahme in der Firewall freigegeben ist...
Kommandozeile dafür:
01.
netsh firewall set service REMOTEADMIN ENABLE SUBNET
mfg Uwe
Bitte warten ..
Mitglied: superwasi
11.08.2008 um 14:40 Uhr
Sorry Stofmeister, das kannst du ja nicht wissen.

Bei uns in der Firma hat jeder lokal Admin das gleiche Passwort.


Müsste es dann nicht auch mit dem lokal admin gehen?

Der Firewalldienst ist bei uns standartmässig deaktiviert, dieser müsste also keine Wirkung haben. Oder sehe ich das falsch.

Danke nochmals für deine Antworten.
Bitte warten ..
Mitglied: colinardo
11.08.2008 um 14:56 Uhr
Wie ich sehe hast du ein Authentifizierungsproblem.
Wenn du dich mit deinem aktuellen Usernamen und Password an dem anderen PC authentifizieren willst muss im Script die folgende Zeile geändert werden:

01.
Const WbemAuthenticationLevelPktPrivacy = 0

Diese Zeile definiert die Art und Weise wie sich das Script gegenüber dem PC ausweist.

Wenn du Wert "0" benutzt muss in dieser Zeile der Benutzername und das Passwort herausgenommen werden:

01.
Set objWMIService = objwbemLocator.ConnectServer(strComputer, "root\cimv2") 


Folgende Werte für Authentifizierung sind möglich :

WbemAuthenticationLevelDefault
0
Short name: Default

WMI uses the default Windows Authentication setting.

WbemAuthenticationLevelNone
1
Short name: None

Uses no authentication.

WbemAuthenticationLevelConnect
2
Short name: Connect

Authenticates the credentials of the client only when the client establishes a relationship with the server.

WbemAuthenticationLevelCall
3
Short name: Call

Authenticates only at the beginning of each call when the server receives the request.

WbemAuthenticationLevelPkt
4
Short name: Pkt

Authenticates that all data received is from the expected client.

WbemAuthenticationLevelPktIntegrity
5
0x5
Short name: PktIntegrity

Authenticates and verifies that none of the data transferred between client and server has been modified.

WbemAuthenticationLevelPktPrivacy
6
0x6
Short name: PktPrivacy

Authenticates all previous impersonation levels and encrypts the argument value of each remote procedure call.


weitere infos dazu findest du hier : MSDN
Bitte warten ..
Mitglied: superwasi
11.08.2008 um 15:07 Uhr
Super!

Danke für deine kompetente Hilfe.

Ich wünsche dir noch einen schönen Tag.
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Eventlog Druckjobs mit VBS auslesen (4)

Frage von joni2000de zum Thema Batch & Shell ...

Entwicklung
Zählerstände über SNMP und VBS auslesen (4)

Frage von motofuzy zum Thema Entwicklung ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Zusammenarbeit
Als Administrator im Großraumbüro (30)

Frage von Dopamin85 zum Thema Zusammenarbeit ...

Hardware
Laptop ins Salzwasser gefallen (18)

Frage von Marcel94 zum Thema Hardware ...

Hardware
Lenovo Yoga 500 über angeschlossene USB Tastatur booten (13)

Frage von thomasreischer zum Thema Hardware ...

CPU, RAM, Mainboards
Hardware Fragen (12)

Frage von xaver-2 zum Thema CPU, RAM, Mainboards ...