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 IPWünsch Dir wasWebbrowserWebentwicklungWeiterbildungWindows 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, 7907 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:
der solltte wohl eher
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:
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:
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
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:
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

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-ADGroupMember

Frage von emeriksBatch & Shell7 Kommentare

Hi, weiß jemand, ob man Get-ADGroupMember dazu bewegen kann, bei Angabe von -Recursive nicht nur die einzelnen Benutzer zu ...

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
Off Topic
Wann gibt es mehr Bits als Atome?
Information von AnkhMorpork vor 1 StundeOff Topic8 Kommentare

Boys 'n' girls, Freitagslektüre: Wenn Computertechnologie und Digitalisierung sich so weiterentwickeln, könnte die Zahl der digitalen Bits in 150 ...

Sicherheits-Tools

TrendMicro Worry-Free Business Security (WFBS) 10.0 SP1 - Critical Patch veröffentlicht!

Information von VGem-e vor 4 StundenSicherheits-Tools3 Kommentare

Servus, siehe hier. Download-Link hier swfbs/10.0WFBS_100_SP1_All_MSA_11.7_HFB1073.exe Nähere Infos habe ich online noch nicht gefunden. Gruß VGem-e

Humor (lol)

Wie verhindere ich, dass Websitebesucher die Werbecookies abschalten?

Information von DerWoWusste vor 2 TagenHumor (lol)9 Kommentare

Ich habe gerade auf die Antwort gefunden: ich täusche einen langwierigen Änderungsprozess vor und biete nebenbei einen Cancelbutton, den ...

Sicherheit

Windows Setup erlaubt elevation of privilege plus DC Updates

Information von DerWoWusste vor 2 TagenSicherheit4 Kommentare

Eine interessante neue Sicherheitslücke. Details gibt es wenig, edit: doch, jetzt hab ich was: aber die klare Empfehlung: ...

Heiß diskutierte Inhalte
Windows Server
Patchday August Server 2019 - zerstört Hyper V Dienste
Frage von ichkriegediekrieseWindows Server20 Kommentare

Guten Morgen alle zusammen Gestern habe ich, wie oft die Sicherheitsupdates vom Patchday eingespielt da ja doch einige Sicherheitsupdates ...

Hardware
Azubi Projekt - Serverhardware
Frage von nachgefragtHardware19 Kommentare

Hallo Administratoren, für ein Azubi-Projekt benötige ich euren Rat, um ihr das Thema Serverhardware näher zu bringen: Server zusammenbauen ...

iOS
Facetime Nummer
gelöst Frage von ral9004iOS16 Kommentare

Hallo Ein Kollege bat mich, ihm für den Videochat meine Facetime Nummer zu mailen. Meine Facetime App läuft auf ...

Windows Server
Administratorrechte im Dateisystem - Windows Server 2019 - DC
Frage von Indy06Windows Server15 Kommentare

Hallo, alle zusammen! Es kommt ja nun doch mal vor, dass man als Administrator auf einem Windows Server 2019, ...

Administrator Magazin
08 | 2020 Cloud-First-Strategien sind inzwischen die Regel und nicht mehr die Ausnahme und Workloads verlagern sich damit in die Cloud – auch Datenbanken. Dort geht es aber nicht nur um die Frage, wie die Datenbestände in die Wolke zu migrieren sind, sondern auch darum, welche Datenbank ...