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, 7171 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-SchedulesTask

gelöst Frage von derhoeppiBatch & Shell2 Kommentare

Hi, für einen Deploymentvorgang habe ich derzeit eine Batchdatei in der viele Scheduled Tasks disabled werden. In der Batchdatei ...

Batch & Shell

PowerShell - Get-ADObject

gelöst Frage von emeriksBatch & Shell11 Kommentare

Hi, mit ist gerade aufgefallen, dass man mit offenbar nicht alle Objekte aller Klassen zurückgeliefert bekommt. Diese Abfrage liefert ...

Neue Wissensbeiträge
Windows Update

KB4517297 verfügbar, behebt Fehler in VB6 VBA VBScript

Information von sabines vor 1 StundeWindows Update

Das Update behebt mögliche Fehler in VB6, VBA und VBScript, die durch das Update KB4512486 vom August entstanden sind. ...

Viren und Trojaner

Staatstrojaner soll auch per Einbruch installiert werden können

Information von transocean vor 1 TagViren und Trojaner2 Kommentare

Moin, Bundesinnenminister Horst Seehofer will dem Verfassungsschutz Wohnungseinbrüche erlauben, um den geplanten Staatstrojaner zu installieren. Gruß Uwe

Windows 7
Win7 Update scheitert KB4512506
Information von infowars vor 2 TagenWindows 7

Falls jemand auch das Problem hat mit dem: Monatliches Sicherheitsqualitätsrollup für Windows 7 für x64-basierte-Systeme (KB4512506) Das scheint mit ...

Humor (lol)
Wenn hacken nach hinten los geht
Information von em-pie vor 3 TagenHumor (lol)5 Kommentare

Moin, weil heute Freitag ist, nachfolgender kurzer Artikel zum schmunzeln:) l+f: NULL ist ein notorischer Falschparker

Heiß diskutierte Inhalte
Switche und Hubs
Glasfaser-Anschluss Telekom muss verteilt werden
Frage von cansoniSwitche und Hubs29 Kommentare

Vorweg: Bin nur Anwender und kein Experte Die Situation: Der Vermieter stellt einen Glasfaseranschluss in der Wohnung bereit. Wir ...

Hyper-V
Bei Neuaufbau auf Core-Server setzen?
gelöst Frage von dertowaHyper-V19 Kommentare

Hallo zusammen, ich habe vor einigen Monaten die Verantwortung für eine EDV-Landschaft übernommen die seit Jahren von einem Dienstleister ...

Hyper-V
VMs von Hyper-V auf externer Festplatte
Frage von SnowbirdHyper-V18 Kommentare

Hallo, ich möchte gerne von VirtualBox auf Hyper-V umsteigen und würde auch gerne weiterhin meine VMs auf der externen ...

Festplatten, SSD, Raid
SSDs durch Lagerung ohne Strom nach 6 Monaten defekt?!?
gelöst Frage von GlobetrotterFestplatten, SSD, Raid16 Kommentare

Moin Gemeinde Ich hatte gerade nen Trauerspiel Habe hier etliche NAS-Geräte herumfahren welche ich mal auf die Seite gelegt ...