Top-Themen

Aktuelle Themen (A bis Z)

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

Am Server anmelden-Drucker auslesen-für jeden Server eine txt- Datei erstellen- kleiner Fehler im Skript

Frage Entwicklung Batch & Shell

Mitglied: Azubi1452

Azubi1452 (Level 1) - Jetzt verbinden

16.11.2010, aktualisiert 11:24 Uhr, 3041 Aufrufe, 6 Kommentare

Hallo zusammen,

ich möchte, dass das Skript, in einer Textdatei angegebenen Server, durchläuft und dort jeweils nach installierten Drucker schaut und diese in jeweils eine Text-Datei aufschreibt.
Es klappt schon ganz viel, ich habe nur das Problem, dass im Moment nur eine Textdatei erstellt wird egal für wie viele Server. In dieser Ergebnis-Textdatei stehen dann auch lediglich die Drucker von einem Server. Alle anderen Server in der tssserver-Datei werden einfach vergessen - weiß jemand was ich falsch gemacht habe ?

Zum Verständnis:
In der Datei: tssserver.txt stehen alle Server von denen ich die installierten Drucker auslesen möchte
und die Datei: "C:\druckerliste_" & strServer &".txt" soll für jeden Server seperat erstellt werden.

Danke schonmal.

Hier mal mein Skript: (Ich hoffe, es ist verständlich)

01.
'1. Schritt: An den Servern anmelden (Server1, Server2 usw.)' 
02.
 
03.
Const WbemAuthenticationLevelPktPrivacy = 6 
04.
Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
05.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
06.
Set oArg = wscript.arguments 
07.
strNamespace = "root\cimv2" 
08.
'--------Datei einlesen und in ein Array schreiben--------' 
09.
Set fso = CreateObject("Scripting.FileSystemObject") 
10.
Set oFile = fso.OpenTextFile("C:\tssserver.txt") 
11.
i=0 
12.
' ---------Erstmal zählen wieviele Einträge---------- 
13.
while not oFile.AtEndOfStream 
14.
i=i+1 
15.
oFile.ReadLine 
16.
Wend 
17.
oFile.Close 
18.
' Array definieren 
19.
REDIM arrServer(i) 
20.
Set oFile = fso.OpenTextFile("C:\tssserver.txt") 
21.
i=0 
22.
' Jetzt Werte ins Array übernehmen 
23.
while not oFile.AtEndOfStream 
24.
arrServer(i)=oFile.ReadLine 
25.
i=i+1 
26.
Wend 
27.
 
28.
servername   =0 
29.
servernummer =0 
30.
servernummerT =0 
31.
'--------Servernamen befinden sich nun im Array-------- 
32.
'-------Für jeden Server eine extra datei anlegen ! ' 
33.
'--------------------------------------------Schleifen- ANFANG------------- 
34.
For Each strServer In arrServer 
35.
 
36.
    ifertig = "False" 
37.
    i2fertig = "False" 
38.
 
39.
    If isOnline(strServer) Then 
40.
 
41.
'--------------------------------------------Username und Passwort---------------------------------------------------'         
42.
strUser = "domäne\admin" 
43.
strPassword = "PW" 
44.
'--------------------------------------------Einstellung Ende-------------------------------------------------------' 
45.
'--------------------------------------------Am Server anmelden-------------------------------------------------------' 
46.
        Set objWMI = objwbemLocator.ConnectServer _ 
47.
            (strServer, strNamespace, strUser, strPassword) 
48.
        objWMI.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy   
49.
'-------------------------Hier muss die Abfrage kommen---------------------------------------------------------------' 
50.
'Set objWMIService = GetObject("winmgmts:\\domäne"& strServer &"\root\cimv2") 
51.
Set colItems = objWMI.ExecQuery("Select * from Win32_Printer",,48) 
52.
Set Ausgabedatei = objFSO.CreateTextFile("C:\druckerliste_" & strServer &".txt",1) 
53.
 
54.
For Each objItem in colItems 
55.
Ausgabedatei.WriteLine "Servername: " & strServer  
56.
Ausgabedatei.WriteLine "Drucker: " & objItem.Name 
57.
Ausgabedatei.WriteLine "Model und Kommentar: " & objItem.Comment 
58.
Ausgabedatei.WriteLine "DriverName: " & objItem.DriverName 
59.
Ausgabedatei.WriteLine "-----------------------------------------" 
60.
Next 
61.
               
62.
              servername= servername +1              
63.
              servernummer = servernummer +1 
64.
 
65.
                End If 
66.
Next 
67.
oFile.Close 
68.
69.
 
70.
 
71.
'--------------------------------------------Schleifen- ENDE------------- 
72.
   MsgBox "Fertig!", Abgeschlossen, vbInfo
Mitglied: bastla
16.11.2010 um 11:37 Uhr
Hallo Azubi1452!

Ersetze mal die ohnehin unnötigen Zeilen 62 und 63 durch
Ausgabedatei.Close
Ansonsten noch eine Anmerkung:
Das Einlesen der Servernamen in ein Array (Zeilen 11 - 26) ließe sich auch etwas knapper formulieren:
arrServer = Split(fso.OpenTextFile("C:\tssserver.txt").ReadAll, vbCrLf)
Grüße
bastla
Bitte warten ..
Mitglied: Azubi1452
16.11.2010 um 14:04 Uhr
Hallo bastla,

ich weiß was das Problem war....
ich habe in meiner Server.txt Datei immer wirklich nur die Servernamen - ohne die Domäne - hingeschrieben.
Mit Domänenangabe gehts
Bitte warten ..
Mitglied: bastla
16.11.2010 um 14:48 Uhr
Hallo Azubi1452!

Selber rausfinden macht ohnehin mehr Spaß ...

Grüße
bastla
Bitte warten ..
Mitglied: Azubi1452
23.11.2010 um 16:51 Uhr
Hallo zusammen,

ich benutze im Skript ja die WMI Klasse: Win32_Printer. In der stehen aber leider nur die Treiber drinnen die von Druckern benutzt werden.
Nun möchte ich aber auch, oder gerade, die Treiber auffinden die zwar auf dem Terminalserver installiert sind, aber von keinem Drucker verwendet werden.

Sinn und Zweck des ganzen ist, die Liste dann mit einer vom Printserver zu vergleichen und als nächsten Schritt dann alle Treiber die nicht verwendet werden zu löschen.

Kann mir jemand sagen wie ich an alle installierten Treiber komme ?

Danke schonmal,

Gruß,
Azubi
Bitte warten ..
Mitglied: Azubi1452
30.11.2010 um 12:34 Uhr
Hallo,

ich habe nun herausgefunden, dass alle installierten Druckertreiber in folgendem Regkey stehen:
“HKLM\System\CurrentControlSet\Control\Print\Printers”

nun möchte ich diesen Registry-Zweig auslesen. Dort hat nämlich jeder installierte Treiber einen eigenen Schlüssel bzw. Ordner.
Am Ende möchte ich die intslalierten Treiber einfach in einer Variable gespeichert haben.

HIer habe ich schon mal ein schönes Beispiel gefunden:

01.
Dim sKey 
02.
Dim sUser 
03.
Dim sOrg 
04.
DIm WshShell 
05.
 
06.
set WshShell = CreateObject("WScript.Shell")  
07.
 
08.
sKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\" & _  
09.
       "Windows NT\CurrentVersion\RegisteredOrganization" 
10.
sOrg = WshShell.RegRead(sKey) 
11.
 
12.
sKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\" & _  
13.
       "Windows NT\CurrentVersion\RegisteredOwner" 
14.
sUser = WshShell.RegRead(sKey) 
15.
 
16.
wscript.echo "Diese Windows-Kopie wurde auf den Namen '" & sUser & _  
17.
             "' der Firma '" & sOrg & "' registriert." 
18.
 
Aber leider ist hier immer ein bestimmter Wert in dem Pfad angegeben. Ich möchte ja aber einen ganzen Zweig auslesen.
Gibt es auch für einen Pfad in der Registry Platzhalter ? Ich habe schon mit * und _ versucht - haut aber alles nicht so hin.

Danke schonmal,

Gruß,
Azubi

EDIT: Hier habe ich unter: "Auflisten vorhandener Schlüssel und Unterzweige" genau sowas gefunden - aber leider ist das in VBNet geschrieben - Kann man dies ohne großen Aufwand vielleicht umschreiben ? http://msdn.microsoft.com/de-de/library/bb979300.aspx
Bitte warten ..
Mitglied: bastla
30.11.2010 um 14:48 Uhr
Hallo Azubi1452!

Bei ActiveXperts findest Du eine Zusammenfassung diverser Scripts (auch) aus dem technet-Script Center ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Variablen aus Txt datei erstellen
Frage von Ghost-7KBatch & Shell3 Kommentare

Guten Tag die Damen und Herren, ich sitze gerade daran für meine Firma ein batch zur Sicherung von Disketten ...

Windows Server
Anmelde Skript Probleme (WinServer2008R2)
gelöst Frage von nicedevilWindows Server3 Kommentare

Hallo allerseits, in meinem Unternehmen gibt es immer wieder mal Probleme mit unserer Logon.bat. Nachdem ich nun seit nem ...

Batch & Shell
Per Skript lokal angeschlossene USB Drucker auslesen
Frage von pixel0815Batch & Shell7 Kommentare

Moin moin, gibt es eine Möglichkeit lokal angeschlossene USB Drucker auszulesen? Ein Tool, ein Skript? Also so viel wie ...

Batch & Shell
Kleines Treesize Bash Skript
Tipp von MKLindnerBatch & Shell1 Kommentar

Ich Gebe euch mal ein kleines Bash Skript: Vielleicht Hilft es jemandem Viel Spass damit

Neue Wissensbeiträge
Microsoft Office

Office 2010 Starter erneut auf einer frischen Windows-Version installieren

Tipp von Lochkartenstanzer vor 1 TagMicrosoft Office9 Kommentare

Moin, vor ein paar Tagen schlug bei mir ein Kunde auf, der sein Widnows 7 geschrottet und es inklusive ...

Datenbanken

Upgrade MongoDB 3.4 auf 3.6

Erfahrungsbericht von Frank vor 1 TagDatenbanken

Seit kurzem gibt es das 3.6 Update für die MongoDB: Sicherheit, das Sortieren, Aggregation und auch die Performance wurde ...

SAN, NAS, DAS

Backdoor Zugang und Upload-Bug in vielen Western Digital MyCloud Geräten

Information von Frank vor 1 TagSAN, NAS, DAS2 Kommentare

James Bercegay von der Firma Gulftech hat die Fehler an Western Digital gemeldet und das Unternehmen stellt bereits ein ...

Microsoft Office

Outlook 2016 - Beim Weiterleiten keine PDF Anhänge mehr - KB4011626 entfernen

Erfahrungsbericht von Deepsys vor 1 TagMicrosoft Office3 Kommentare

Wenn ihr feststellt das ihr beim Weiterleiten von E-Mails keine PDF Anhänge mehr versendent, dann dankt Microsoft. Diese tolle ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Drucker und Scanner
Gesucht DIN A3 Drucker
Frage von NebellichtDrucker und Scanner15 Kommentare

Hallo, ich möchte einen neuen DIN A3 Drucker kaufen. Um ab und zu, ca. 1 mal die Woche Farbausdrucke ...

iOS
Einladung vom iphone kalender
Frage von jensgebkeniOS15 Kommentare

Hallo Gemeinschaft, folgendes Problem - immer wenn ich von meinem Iphone einen Termin einztrage und diesem Termin Teilnehmer zuweise, ...

Windows Netzwerk
Drucker isolieren in Windows Domäne
gelöst Frage von lcer00Windows Netzwerk14 Kommentare

Hallo zusammen, habe eine Windows-AD (2012R2) in der es einen Druckerserver gibt. Mittlerweile verliere ich das Vertrauen in die ...