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

BESCHREIBUNG des Drucker ports auslesen

Frage Entwicklung VB for Applications

Mitglied: 43344

43344 (Level 1)

09.03.2007, aktualisiert 16:28 Uhr, 3433 Aufrufe, 5 Kommentare

Morgen zusammen,

nach toller Lösung des letzten Problems muss ich schon wieder eins anbringen

Wenn ein eingeschränkter Benutzer sich selber einen Drucker im Netzwerk verbindet, lautet die Beschreibung dieses Druckers: "Virtual printer port for USB/LPT". Wie kann ich per Skript darauf zugreifen? Ich dachte mir etwas wie:


if objItem.description <> "Virtual printer port for USB/LPT" then ......

Dummerweise ist objItem.description leer und ich habe keine Ahnung, wohin diese Information geschrieben wird ... kann mir da jemand auf die Sprünge helfen????
Mitglied: bastla
09.03.2007 um 12:17 Uhr
Hallo Stylewalker!

Vorläufig kann ich Dich nur einmal zur MS-eigenen Doku verweisen, wo Du alle Eigenschaften aufgelistet findest, bzw Dir folgendes Script aus dem gleichen Hause zur Anzeige dieser Eigenschaften anbieten - vielleicht findest Du ja was:
01.
strComputer = "."  
02.
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")  
03.
Set colItems = objWMIService.ExecQuery( _ 
04.
    "SELECT * FROM Win32_Printer",,48)  
05.
For Each objItem in colItems  
06.
    Wscript.Echo "-----------------------------------" 
07.
    Wscript.Echo "Win32_Printer instance" 
08.
    Wscript.Echo "-----------------------------------" 
09.
    Wscript.Echo "Attributes: " & objItem.Attributes 
10.
    Wscript.Echo "Availability: " & objItem.Availability 
11.
    Wscript.Echo "AveragePagesPerMinute: " & objItem.AveragePagesPerMinute 
12.
    If isNull(objItem.Capabilities) Then 
13.
        Wscript.Echo "Capabilities: " 
14.
    Else 
15.
        Wscript.Echo "Capabilities: " & Join(objItem.Capabilities, ",") 
16.
    End If 
17.
    If isNull(objItem.CapabilityDescriptions) Then 
18.
        Wscript.Echo "CapabilityDescriptions: " 
19.
    Else 
20.
        Wscript.Echo "CapabilityDescriptions: " & Join(objItem.CapabilityDescriptions, ",") 
21.
    End If 
22.
    Wscript.Echo "Caption: " & objItem.Caption 
23.
    Wscript.Echo "ConfigManagerErrorCode: " & objItem.ConfigManagerErrorCode 
24.
    Wscript.Echo "ConfigManagerUserConfig: " & objItem.ConfigManagerUserConfig 
25.
    Wscript.Echo "CreationClassName: " & objItem.CreationClassName 
26.
    Wscript.Echo "DefaultPriority: " & objItem.DefaultPriority 
27.
    Wscript.Echo "Description: " & objItem.Description 
28.
    Wscript.Echo "DetectedErrorState: " & objItem.DetectedErrorState 
29.
    Wscript.Echo "DeviceID: " & objItem.DeviceID 
30.
    Wscript.Echo "DriverName: " & objItem.DriverName 
31.
    Wscript.Echo "ErrorCleared: " & objItem.ErrorCleared 
32.
    Wscript.Echo "ErrorDescription: " & objItem.ErrorDescription 
33.
    Wscript.Echo "HorizontalResolution: " & objItem.HorizontalResolution 
34.
    Wscript.Echo "InstallDate: " & objItem.InstallDate 
35.
    Wscript.Echo "JobCountSinceLastReset: " & objItem.JobCountSinceLastReset 
36.
    If isNull(objItem.LanguagesSupported) Then 
37.
        Wscript.Echo "LanguagesSupported: " 
38.
    Else 
39.
        Wscript.Echo "LanguagesSupported: " & Join(objItem.LanguagesSupported, ",") 
40.
    End If 
41.
    Wscript.Echo "LastErrorCode: " & objItem.LastErrorCode 
42.
    Wscript.Echo "Location: " & objItem.Location 
43.
    Wscript.Echo "Name: " & objItem.Name 
44.
    If isNull(objItem.PaperSizesSupported) Then 
45.
        Wscript.Echo "PaperSizesSupported: " 
46.
    Else 
47.
        Wscript.Echo "PaperSizesSupported: " & Join(objItem.PaperSizesSupported, ",") 
48.
    End If 
49.
    Wscript.Echo "PNPDeviceID: " & objItem.PNPDeviceID 
50.
    Wscript.Echo "PortName: " & objItem.PortName 
51.
    If isNull(objItem.PowerManagementCapabilities) Then 
52.
        Wscript.Echo "PowerManagementCapabilities: " 
53.
    Else 
54.
        Wscript.Echo "PowerManagementCapabilities: " & Join(objItem.PowerManagementCapabilities, ",") 
55.
    End If 
56.
    Wscript.Echo "PowerManagementSupported: " & objItem.PowerManagementSupported 
57.
    If isNull(objItem.PrinterPaperNames) Then 
58.
        Wscript.Echo "PrinterPaperNames: " 
59.
    Else 
60.
        Wscript.Echo "PrinterPaperNames: " & Join(objItem.PrinterPaperNames, ",") 
61.
    End If 
62.
    Wscript.Echo "PrinterState: " & objItem.PrinterState 
63.
    Wscript.Echo "PrinterStatus: " & objItem.PrinterStatus 
64.
    Wscript.Echo "PrintJobDataType: " & objItem.PrintJobDataType 
65.
    Wscript.Echo "PrintProcessor: " & objItem.PrintProcessor 
66.
    Wscript.Echo "SeparatorFile: " & objItem.SeparatorFile 
67.
    Wscript.Echo "ServerName: " & objItem.ServerName 
68.
    Wscript.Echo "ShareName: " & objItem.ShareName 
69.
    Wscript.Echo "SpoolEnabled: " & objItem.SpoolEnabled 
70.
    Wscript.Echo "StartTime: " & objItem.StartTime 
71.
    Wscript.Echo "Status: " & objItem.Status 
72.
    Wscript.Echo "StatusInfo: " & objItem.StatusInfo 
73.
    Wscript.Echo "SystemCreationClassName: " & objItem.SystemCreationClassName 
74.
    Wscript.Echo "SystemName: " & objItem.SystemName 
75.
    Wscript.Echo "TimeOfLastReset: " & objItem.TimeOfLastReset 
76.
    Wscript.Echo "UntilTime: " & objItem.UntilTime 
77.
    Wscript.Echo "VerticalResolution: " & objItem.VerticalResolution 
78.
Next
Grüße
bastla
Bitte warten ..
Mitglied: 43344
09.03.2007 um 13:57 Uhr
Danke erstmal, steht leider nicht drin was ich suche

Ich bin bisher soweit:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")

Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_Printer")
For Each objItem in colItems
If objItem.Workoffline = True Then
objItem.Workoffline = False
objItem.Put_
End If
Next

If CheckAndSet("LPT%:") Then WScript.Quit
If CheckAndSet("USB%") Then WScript.Quit
If CheckAndSet("%38PCX%") Then WScript.Quit
r = CheckAndSet("%")

Function CheckAndSet(sPort)
Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_Printer WHERE PortName LIKE '" & sPort & "'",,48)
For Each objItem in colItems
if objItem.portname <> "Microsoft Document Imaging Writer Port:" & "FreePDFXP1:" then _
if objItem.Name <> "\\C38PCX%" then objItem.SetDefaultPrinter()


In der letzten Zeile liegt der Hase begraben: er frisst irgendwie das % Zeichen nicht und "NOT LIKE" als Vergleichsoperator haut auch nicht hin. Hast du ne Idee, wie ich aus der Nummer rauskomme?
Bitte warten ..
Mitglied: bastla
09.03.2007 um 14:57 Uhr
Hallo Stylewalker!

Wenn's nur darum geht, den Anfang eines Strings zu vergleichen, kannst Du es ja etwa so versuchen:
01.
If UCase(Left(objItem.Name, Len("\\C38PCX"))) <> UCase("\\C38PCX") Then objItem.SetDefaultPrinter()
Die Längenermittlung ist für den Fall gedacht, dass "\\C38PCX" in eine Variable ausgelagert wird und daher nicht einfach davon ausgegeangen werden kann, dass die ersten 8 Stellen überprüft werden - kürzer, aber weniger flexibel wäre demnach:
01.
If UCase(Left(objItem.Name, 8)) <> UCase("\\C38PCX") Then objItem.SetDefaultPrinter()
Noch zum UCase(): Um bei Stringvergleichen das Problem Groß-/Kleinschreibung zu eliminieren, bringe ich beide Strings in einen definierten Zustand (in diesem Fall Großschreibung).
Was mir noch auffällt: Meinst Du mit
01.
... <> "Microsoft Document Imaging Writer Port:" & "FreePDFXP1:" ...
weder / noch? In diesem Fall müsstest Du schreiben:
01.
if objItem.portname <> "Microsoft Document Imaging Writer Port:" And objItem.portname <> "FreePDFXP1:" Then
Grüße
bastla
Bitte warten ..
Mitglied: 43344
09.03.2007 um 15:12 Uhr
Hmmm, sieht gut aus, geht aber auch nicht

Das % Zeichen (oder was auch immer ich da einsetzen muss) brauche ich als Platzhalter für mind. 5 immer unterschiedliche Zeichen.

Hintergrund:

Netzwerkdrucker, die sich ein Benutzer selbst verbinden kann werden auf dem Port erkannt, an dem sie am Host PC hängen. Wechselt der Benutzer den PC soll ein lokal vorhandener Drucker als Standard gewählt werden. Die Info was das für ein Drucker ist will teilweise über die Ports (Microsoft und PDF) teils über den Namen (\\C38PCX = Teil des PC-Namens) ziehen und dementsprechend aussortieren.


Gruß

ps.: ja, meinte weder/noch ... ;)
Bitte warten ..
Mitglied: bastla
09.03.2007 um 16:28 Uhr
Hallo Stylewalker!

Das % Zeichen (oder was auch immer ich da einsetzen muss) brauche ich als Platzhalter für mind. 5 immer unterschiedliche Zeichen.
Du brauchst es nicht: Es soll ja symbolisieren, dass nach den ersten 8 Stellen beliebige weitere folgen können - genau das macht aber die von mir vorgeschlagene Änderung: es wird nur der Anfang verglichen (verbunden wird demnach, wenn der Druckername nicht mit "\\C38PCX" beginnt) ...

Zur Sicherheit nochmals die ganze Zeile:
01.
If objItem.portname <> "Microsoft Document Imaging Writer Port:" And objItem.portname <> "FreePDFXP1:" Then If UCase(Left(objItem.Name, Len("\\C38PCX"))) <> UCase("\\C38PCX") Then objItem.SetDefaultPrinter()
Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Batch & Shell
Per Skript lokal angeschlossene USB Drucker auslesen (7)

Frage von pixel0815 zum Thema Batch & Shell ...

Windows 7
gelöst Bereits eingebundener Drucker - IP Adresse lokal auslesen (17)

Frage von harald.schmidt zum Thema Windows 7 ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

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

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...