der JScript for...in
Aussage ist nicht kompatibel mit WMI-Objekte, weil, na ja, sie komplexer als nativer JScript-Objekte sind. WMI-Objekte stellen ihre Eigenschaftensammlung über die spezielle Eigenschaft Properties_
dar. Um alle verfügbaren Eigenschaften eines Objekts aufzulisten, müssen Sie diese Auflistung auflisten, indem Sie die Abfrageergebnisse auflisten, um auf einzelne WMI-Objekte zuzugreifen. Jede Objekteigenschaft wird durch ein Objekt SWbemProperty
dargestellt, das über die Eigenschaften Name
, Value
und andere Eigenschaften verfügt, die Informationen über die entsprechende Objekteigenschaft bereitstellen.
Dieses Beispiel sollte man auf die Idee kommen helfen:
var query = GetObject("winmgmts:").ExecQuery("SELECT Name, Status FROM Win32_Printer");
var colPrinters = new Enumerator(query);
var oPrinter, colProps, p;
// Enumerate WMI objects
for (; !colPrinters.atEnd(); colPrinters.moveNext()) {
oPrinter = colPrinters.item();
// Enumerate WMI object properties
colProps = new Enumerator(oPrinter.Properties_);
for (; !colProps.atEnd(); colProps.moveNext()) {
p = colProps.item();
WScript.Echo(p.Name + ": " + p.Value);
}
}
Beachten Sie, dass dieses Skript wird auch den DeviceID
Eigenschaftswert angezeigt werden, weil sie eine Schlüsseleigenschaft der Win32_Printer
Klasse ist, so ist es auch in Ordnung abgerufen eindeutig Identifizieren von Klasseninstanzen
Класс. Спасибо! –
@HenryFlower So viel wie ich diese kyrillischen Buchstaben mag, ist es am besten, hier auf Englisch zu schreiben :) Übrigens würde ich nicht denken, dass eine "Henry Flower" aus Russland wäre! –