Windows-Version ermitteln

Hilfsfunktion zur Ermittlung von Informationen über das verwendete Windows-Betriebssystem
Antworten
wernerperplies
Beiträge: 250
Registriert: 6. Aug 2011, 17:48
Wohnort: 18374 Zingst
Kontaktdaten:

Windows-Version ermitteln

Beitrag von wernerperplies » 12. Mai 2017, 08:23

Es ist nicht immer drin, was draufsteht! :-)

Wenn Sie die in InDesign-ExtendScript eingebaute Funktion $.os verwenden, um Ihre Windows-Version zu ermitteln, werden Sie ab Windows 8 eine Überraschung erleben, für Adobe ist einfach bei Windows 7 Schluss!

Mit meinem Skript wpsGetOutputFromWmic.jsx können Sie das Rätsel lösen.

Es benutzt Microsofts Windows Management Instrumentation Command-line, kurz WMIC.

WMIC liefert Ihnen umfangreiche Informationen über Ihr Windows-Betriebssystem.

Weitere Informationen über dieses hilfreiche Programm finden Sie hier:
Windows Management Instrumentation Command-line

Um die von WMIC ermittelten Informationen in das eigene JavaScript-Skript zu bekommen, bedarf es einigen Aufwands:

1. Eine Batchdatei, um Informationen von Windows abzuholen und in eine Textdatei zu schreiben.
2. Eine VBS-Datei (Visual Basic Script), um ein verborgenes Konsolenfenster zu erzeugen, damit die Batchdatei ohne aufpoppendes Konsolenfenster auszuführt wird.
3. Routinen, die diese Dateien on the fly erzeugen und das Ergebnis in Ihre Script einlesen.

Das alles macht mein Skript wpsGetOutputFromWmic.jsx.

Wenn Sie mein Skript in Ihr eigenes Skript einbinden, können Sie WMIC-Informationen einfach so abrufen:

Code: Alles auswählen

wpsGetOutputFromWmic("os get version,osarchitecture,caption");
Das Ergebnis könnte dann so aussehen:
VersionAlert.png
VersionAlert.png (7.96 KiB) 22028 mal betrachtet
oder lieber so?

Code: Alles auswählen

wpsGetOutputFromWmic("os get version,osarchitecture,caption /value");
VersionAlertLine.png
VersionAlertLine.png (8.19 KiB) 21994 mal betrachtet

Code: Alles auswählen

// DESCRIPTION execute a wmic (Windows Management Instrumentation Command-line) command
// see also https://msdn.microsoft.com/en-us/library/aa394531(v=vs.85).aspx
// Dateiname: wpsGetOutputFromWmic.jsx
// #includepath "C:/Users/WernerPerplies/Source/Workspaces/Singles/";
// projPath: C:/Users/WernerPerplies/Source/Workspaces/Singles/
// for this Script
//  © 2017 by Werner Perplies, EDV-Anwendungsberatung, 
// http://www.weepee.de, email: werner.perplies@weepee.de 
// created: Thu May 11 2017 07:20:34 GMT+0200
// [modified]
// next line is a placeholder for last version of wpsIncludes (>= version 3)
// [lastFileProps:({time:"1488208806000", size:14240, checkSum:"151ae4fa", scriptVersion:"1.48", scriptDate:"201703201000"})]
// [end of header]

#include "wpsWriteString2File.jsx";
#include "wpsReadFile2String.jsx";
var /*String*/result = wpsGetOutputFromWmic("os get version,osarchitecture,caption");
if (result.length > 0)
    alert("Windows-Version:\nInDesign JavaScript meint: " + $.os + "\nWindows meint: \n" + result);

function wpsGetOutputFromWmic(/*String*/wmicCommand)
{
    try
    {
	// create wmic batch file
        var wmMcOutput = "";
        //  critical if one of filenames exists, test this or create unique filenames
        var /*File*/outputFile = File(Folder.temp + "/wmic.text").fsName;
        wmicCommand = " " + wmicCommand + " > " + outputFile; 
        outputFile = new File(outputFile);
        if (outputFile.exists)
        {            
            if (!(outputFile.remove()))
                throw new Error(outputFile.error);
        }
        var /*File*/wMicFile = new File(Folder.system + "/wbem/WMIC.exe");
        var /*String*/wMicBatch = "@ECHO OFF\nwmic"  + wmicCommand + "\nExit /B";  
        var /*File*/wMicBatchFile = new File( File(Folder.temp + "/wmic.bat"))
        // needs vbs startscript to hide DOS console window
        var /*File*/startFile = new File( File(Folder.temp + "/start.vbs"))
        var /*String*/startContent = "Set WshShell = WScript.CreateObject(\"WScript.Shell\")\nWshShell.Run \"" + wMicBatchFile.fsName + "\",0,True\n";
        var counter = 0;
        wpsWriteString2File(startFile, startContent);
        wpsWriteString2File(wMicBatchFile, wMicBatch);
        wMicBatchFile = File(wMicBatchFile) ;
        // to be sure that batch file exists;
        while (!wMicBatchFile.exists)
        {
            if (++counter > 100)
                break;
            $.sleep(10);
            wMicBatchFile = File(wMicBatchFile) ;
        }
        counter = 0;
        if (startFile.execute())
        {
            outputFile = new File(outputFile)
            // to be sure that batch file exists;
            while (!outputFile.exists)
            {
                if (++counter > 10000)
                    break;
                $.sleep(100);
                outputFile = new File(outputFile)
            }
            // necessary to verify, that outputfile is created and closed!
            counter = 0;
            while (!(outputFile.length > 0))
            {
                if (++counter > 10000)
                    break;
                $.sleep(100);
                outputFile = new File(outputFile)
            }
        }
        if (!( wMicBatchFile.remove()))
            throw new Error(wMicBatchFile.error);
        wmMcOutput = wpsReadFile2String(outputFile, "");
    }
    catch (error)
    {
        alert(error.message + "\nin line: " + error.line);
        throw error;
    }
    return wmMcOutput;
}
   /*array */function properties(/*object*/o)
    {
        var a = new Array();
        for (var prop in o)
        {
            a.push(prop);
        }
        return a;
    }
Die Zip-Datei enthält alle notwendigen Dateien, die Sie am besten in ein gemeinsames Verzeichnis kopieren.
Bei Aufruf des Skriptes werden alle Module automatisch geladen und ausgeführt.

Download (erfordert Anmeldung/Registrierung im Forum):
wpsGetOutputFromWmic.zip (Version 1.01 vom 12.05.2017)


Zuletzt als neu markiert von wernerperplies am 12. Mai 2017, 08:23.
einen schönen Tag wünscht

Werner Perplies
https://www.weepee.de

Antworten

Zurück zu „WpsGetOutputFromWmic“