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

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, 3022 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Webentwicklung
gelöst HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Batch & Shell
Merkwürdige Zeilenformatierung in txt Datei (3)

Frage von miczar zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
RODC über VPN - Verbindung weg (10)

Frage von stefan2k1 zum Thema Windows Server ...