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

gelöst Powershell Get-WMIObject

Mitglied: chrrs83

chrrs83 (Level 1) - Jetzt verbinden

28.01.2014 um 14:32 Uhr, 6146 Aufrufe, 11 Kommentare, 2 Danke

Hiho,

und die besten grüße aus Braunschweig.
Ich bastel mir imo ein kleines Tool (GUI), das folgendes können muss:
- alle installierten Drucker auslesen
- Druckerspooler starten/stoppen/restarten
- den Drucker Status auslesen kann und Fehler anzeigt

- und es soll die Möglichkeit geben die Druckaufträge für den ausgewählten Drucker zu löschen
HIER HABE ICH MEIN PROBLEM!

Und zwar:


$global:AllPrinter = Get-WmiObject Win32_Printer -ErrorAction SilentlyContinue

(Get-WmiObject -Class win32_printer -Filter "name=$allprinter[$LSTBox.SelectedIndex].name").CancelAllJobs()


In einer Listbox sind alle installierten Drucker eingetragen. Ich rufe den Index der ListBox ab, um den ausgewählten
Drucker herauszufinden. Beim ausführen kommt aber folgende Fehlermeldung


Get-WmiObject : Die Anfrage ist ungültig. "select * from win32_printer where name=\\PC12004\root\cimv2:Win32_Printer.DeviceID="Kyocera TASKalfa 3500i KX"
\\PC12004\root\cimv2:Win32_Printer.DeviceID="\\\\sv09004v02\\DR10016" \\PC12004\root\cimv2:Win32_Printer.DeviceID="\\\\sv09004v02\\Farblaser-Verwaltung"[System.Windows.Forms.ListBox,
Items.Count: 3, Items[0]: Kyocera TASKalfa 3500i KX.SelectedIndex].name"
In C:\print_device_mngr_gui.ps1:107 Zeichen:15

$Test = (Get-WmiObject -Class win32_printer -Filter "name=$allprinter[$LSTB ...

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidArgument: ( [Get-WmiObject], ManagementException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
In C:\print_device_mngr_gui.ps1:107 Zeichen:5

$Test = (Get-WmiObject -Class win32_printer -Filter "name=$allprinter[$LSTB ...

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidOperation: ( [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull



Hat jemand eine Lösung oder Denkanstoss für mich.

Danke schon mal im Voraus.


Gruß

Chris











Mitglied: colinardo
28.01.2014, aktualisiert um 15:23 Uhr
Hallo Chris, Wilkommen im Forum!
das kann ja wohl unmöglich der Name deines Druckers sein:
\\PC12004\root\cimv2:Win32_Printer.DeviceID="Kyocera TASKalfa 3500i KX"
der solltte wohl eher
Kyocera TASKalfa 3500i KX
lauten. Deswegen ist das Objekt Leer und hat keine Methode mit CancelJobs also musst du den korrekten Namen noch zurechtstutzen oder deine Listbox mit den richtigen Namen füllen wie hier:
gwmi "Win32_Printer" | %{$LSTBox.Items.Add($_.Name)}
Grüße Uwe
Bitte warten ..
Mitglied: chrrs83
28.01.2014, aktualisiert um 15:30 Uhr
Hiho und danke für´s willkommen heißen

Das habe ich mir auch schon gedacht und mir mal die Variable ausgeben lassen:

Ergebniss:

$Auswahl = $AllPrinter[$LSTBox.SelectedIndex].name
Write-Host $Auswahl

Kyocera TASKalfa 3500i KX

Der Listbox Eintrag dient mir in erster Linie ja nur als Index für mein $AllPrinter Array. Ich lese ja die Namen direkt aus dem Array.

Hmm.... sollte ja dann passen.
Bitte warten ..
Mitglied: colinardo
28.01.2014, aktualisiert um 15:35 Uhr
sehe glaub ich deinen Fehler:
schreib die Zeile mal so:
(Get-WmiObject -Class win32_printer -Filter "Name='$($allprinter[$LSTBox.SelectedIndex].name)'").CancelAllJobs()
Bitte warten ..
Mitglied: chrrs83
28.01.2014 um 15:35 Uhr
Danke schon mal für deine Bemühungen... wirklich.

Wenn ich das so änder kommt die folgende Fehlermeldung:

get-wmiobject : Die Anfrage ist ungültig. "select * from win32_printer where name=Kyocera TASKalfa 3500i KX"
In C:\Users\halasz\Documents\001. Powershell\print_device_mngr_gui.ps1:110 Zeichen:6

(get-wmiobject -class win32_printer -Filter "name=$($AllPrinter[$LSTBox.Sele ...

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidArgument: ( [Get-WmiObject], ManagementException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
In C:\Users\halasz\Documents\001. Powershell\print_device_mngr_gui.ps1:110 Zeichen:57

(get-wmiobject -class win32_printer -Filter "name=$($AllPrinter[$LSTBox.Sele ...

~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidOperation: ( [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Bitte warten ..
Mitglied: colinardo
28.01.2014, aktualisiert um 15:39 Uhr
hatte den Code nochmal nachträglich geändert, dir fehlen die einfachen Anführungszeichen um den Namen in der SQL Query
Bitte warten ..
Mitglied: chrrs83
28.01.2014, aktualisiert um 15:45 Uhr
Hab ich bemerkt und dann auch richtig übertragen:

Jetzt erhalte ich den Fehler bei 2 von 3 Testdruckern...

Der Eintrag geht: Kyocera TASKalfa 3500i KX
Der Eintrag geht nicht: \\sv09004v02\DR10016

Zwei verschiedene Drucker... kann das sein das der Name wegen den "\\" nicht genommen wird bzw. genommen werden kann?

Leider ist das aber der Druckername wie er ihn durch Get-WMIObject ausliest!

Oder soll ich dort den Sharename nehmen?
Bitte warten ..
Mitglied: colinardo
28.01.2014, aktualisiert um 15:46 Uhr
Zitat von chrrs83:

Hab ich bemerkt und dann auch richtig übertragen:

Jetzt erhalte ich den Fehler bei 2 von 3 Testdruckern...

Der Eintrag geht: Kyocera TASKalfa 3500i KX
Der Eintrag geht nicht: \\sv09004v02\DR10016
hast du bzw. dein Script denn überhaupt die entsprechenden Berechtigungen die Warteschlange des Netzwerkdruckers zu löschen ? Normale User dürfen das nämlich normalerweise nicht
Bitte warten ..
Mitglied: chrrs83
28.01.2014 um 15:46 Uhr
Ich danke schon mal für alle Einträge... bin jetzt erstmal im Aussendienst und erst gg Abend oder morgen früh wieder da.
Bitte warten ..
Mitglied: chrrs83
28.01.2014 um 15:49 Uhr
Die habe ich... mein Script prüft vorab sogar den Status:

$objIdentity = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$objSecPrinc = New-Object System.Security.Principal.WindowsPrincipal($objIdentity)

if(!$objSecPrinc.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))
{
........
}

Oder meinst du das die Berechtigungen nicht ausreichen könnten? Du magst recht haben...

Was mich aber da noch stört, das beim ersten Eintrag alles wunderbar klappt (druch deine Hilfe)... nur bei den anderen beiden (noch) nicht.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 28.01.2014, aktualisiert 29.01.2014
Schreib die Zeile besser so, dann bekommst du keine Probleme mit Backslashes im SQL-Filter
Get-WmiObject -Class win32_printer | ?{$_.Name -eq $allprinter[$LSTBox.SelectedIndex].name} | %{$_.CancelAllJobs()}
in SQL müssten die nämlich alle verdoppelt werden. Wenn dir obige Zeile nicht in den Kram passt dann mach sie so: die ersetzt eventuell vorhandene Backslashes durch doppelte:
(Get-WmiObject -Class win32_printer -Filter "Name='$($allprinter[$LSTBox.SelectedIndex].name.Replace("\","\\"))'").CancelAllJobs()
Bitte warten ..
Mitglied: chrrs83
29.01.2014 um 07:40 Uhr
Hab deine Zeile mal übernommen... und siehe da es klappt
Vielen dank dafür!

Ich werde sicherlich, in meinem Projekt, die ein oder andere Frage haben. Also sehen wir uns in Zukunft sicherlich öfter .
Bis dahin alles gute und danke.


Gruß
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Powershell: get-wmiobject -computername XYZ

gelöst Frage von Bheleu21Batch & Shell3 Kommentare

Guten Morgen Da ich gerade am meiner geistgen Gesundheit zweifle, Frage ich hier nach ob noch jemand Ideen hat ...

Batch & Shell

Get-WmiObject, nach Netzwerkadapter filtern

gelöst Frage von FlodscheBatch & Shell11 Kommentare

Hallo, ich habe folgendes Script: Jedoch ist in dem Excel-Dokument die Spalte für den Gateway nacher leer. Nun habe ...

Batch & Shell

Powershell Get-Hotfix Script

Frage von u0206084Batch & Shell3 Kommentare

Hallo Kollegen, ich möchte die Hotfixes der Server auslesen hierzu , habe ich verschiedene Powershellscripte gefunden. Script 1: (Funktioniert ...

Batch & Shell

PowerShell - Get-Content - spinnt

gelöst Frage von emeriksBatch & Shell7 Kommentare

Hi, habe ein PS-Script. Get-Content liefert für dieselbe Datei (keine Replikate) verschiedene Ergebnisse, wenn das Script auf verschiedenen Servern ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 21 StundenHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 1 TagRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 1 TagSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 2 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Sicherheit
Verbindliche Zustellung per E-Mail?
Frage von ahussainSicherheit18 Kommentare

Hallo allerseits, ein Kunde von mir nutzt intensiv Fax. Hauptgrund: zusammen mit einer Empfangsbestätigung ist eine verbindliche Zustellung gewährleistet. ...

Sonstige Systeme
Wie Normenkataloge im Unternehmen bereit stellen?
Frage von MuzzepuckelSonstige Systeme14 Kommentare

Hallo Kollegen, ich lese schon lange hier mit, nun mein ersrer Beitrag, bzw. Frage. :-) Wir benötigen für unsere ...

Linux Netzwerk
Raspberry Pi 3: WLAN Power save deaktivieren
Frage von nordie92Linux Netzwerk13 Kommentare

Moin moin, mein Raspberry Pi 3 Model B benötigt eine dauerhaft aktive WLAN-Verbindung. Leider bricht die WLAN-Verbindung nach einigen ...

SAN, NAS, DAS
Entscheidung SAN Dell oder HP
Frage von VincorSAN, NAS, DAS13 Kommentare

Hallo, wir wollen uns für unsere Hyper V Umgebung eine neue SAN Anschaffen. Es laufen 30 VM's darunter, DC; ...