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, 13433 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
Mit freundlichen Grüßen 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
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

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

Frage von motofuzy zum Thema Entwicklung ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Batch & Shell
gelöst Appx aus Image auslesen und entfernen (9)

Frage von Markus2016 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...