1

Тема: WSH, JS: Базовая информация об ОС, процессах, программах

Указанный ниже код создает файл с информацией о
1. названии, версии и разрядности ОС
2. имени текущего пользователя
3. логических разделах дисков
4. запущенных процессах
5. установленных программах
6. модели ПК

var FSO = fso = WScript.CreateObject("Scripting.FileSystemObject");
var WshShell = WScript.CreateObject("WScript.Shell");

Enumerator.prototype.toArray = function ()
{
    var Result = [];
    for (;!this.atEnd();this.moveNext())
    Result.push(this.item())
    return Result;
}

function CreateTextFile(Path)
{
    Path = WshShell.ExpandEnvironmentStrings(Path);
    return fso.OpenTextFile(Path, 2, 1)
}

function isFile(Path)
{
    return fso.FileExists(Path);
}

function WMIQuery(Moniker, Query)
{
    var Service =  GetObject(Moniker),
    Items = Service.ExecQuery(Query);
    return new Enumerator(Items).toArray();
    return true;
}


function DetectWindowsVersion()
{
    var Windows = WMIQuery("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2", "Select * from Win32_OperatingSystem" );
    var Processor = WMIQuery("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2", "Select * from Win32_Processor" );
        return Windows[0].Caption+"\t"+Windows[0].Version+"\t"+Processor[0].AddressWidth+"bit"; 
}

function GetUserName()
{
    try{return "CurrentUser\t"+WScript.CreateObject("WScript.NetWork").UserName;}catch(e){return "CurrentUser\tUnknown";}
}

function GetDrives()
{
    var D = (new Enumerator(FSO.Drives).toArray().toString().replace(/A:,/,"").replace(/:/g,":\\").split(","));
    var Drives=[];
    for (var i=0; i<D.length; i++)
    {
        try {
            if (FSO.GetDrive(D[i]).IsReady) Drives.push(D[i]);
        } catch (e) {}
    }
    return Drives;
}

function GetDrivesInformation()
{
    var Drives = GetDrives(), Drive, Result=["\r\nDRIVES"];
    for (var i=0; i<Drives.length; i++)
    {
        Drive = FSO.GetDrive(Drives[i]);
        Result.push(
        [
        "============================",
        "Drive.DriveLetter: "+Drive.DriveLetter,
        "Drive.VolumeName: "+Drive.VolumeName,
        "Drive.DriveType: "+Drive.DriveType,
        "Drive.FileSystem: "+Drive.FileSystem,
        "Drive.TotalSize: "+Drive.TotalSize,
        "Drive.AvailableSpace: "+Drive.AvailableSpace
        ].join("\r\n")
        );
    }
    Result.push("============================")
    return Result.join("\r\n");
}

function GetProcessInformation()
{
    var Ar = WMIQuery("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\CIMV2", "SELECT * FROM Win32_Process");
    var Result=[];
    
    for (var i=0;i<Ar.length; i++)
    Result.push(Ar[i].Name +"\t"+ Ar[i].CommandLine);
    
    Result=Result.sort();
    Result.push("============================");
    Result.unshift("\r\nPROCESSES", "============================");
    return Result.join("\r\n");
}

function GetComputerInformation()
{
        function WMIDateStringToDate(dtmDate)
    {
    if (dtmDate == null)
    {
    return "null date";
    }
    var strDateTime;
    if (dtmDate.substr(4, 1) == 0)
    {
    strDateTime = dtmDate.substr(5, 1) + "/";
    }
    else
    {
    strDateTime = dtmDate.substr(4, 2) + "/";
    }
    if (dtmDate.substr(6, 1) == 0)
    {
    strDateTime = strDateTime + dtmDate.substr(7, 1) + "/";
    }
    else
    {
    strDateTime = strDateTime + dtmDate.substr(6, 2) + "/";
    }
    strDateTime = strDateTime + dtmDate.substr(0, 4) + " " +
    dtmDate.substr(8, 2) + ":" +
    dtmDate.substr(10, 2) + ":" +
    dtmDate.substr(12, 2);
    return(strDateTime);
    }

    var Result=[];

    var wbemFlagReturnImmediately = 0x10;
    var wbemFlagForwardOnly = 0x20;

        var objWMIService = GetObject("winmgmts:\\\\.\\root\\CIMV2");
        var colItems = objWMIService.ExecQuery("SELECT * FROM Win32_SystemEnclosure", "WQL",
        wbemFlagReturnImmediately | wbemFlagForwardOnly);

        var enumItems = new Enumerator(colItems);
        for (; !enumItems.atEnd(); enumItems.moveNext()) {
        var objItem = enumItems.item();

        if (objItem.AudibleAlarm) Result.push("AudibleAlarm: " + objItem.AudibleAlarm);
        if (objItem.BreachDescription) Result.push("BreachDescription: " + objItem.BreachDescription);
        if (objItem.CableManagementStrategy) Result.push("CableManagementStrategy: " + objItem.CableManagementStrategy);
        if (objItem.Caption) Result.push("Caption: " + objItem.Caption);
        try {Result.push("ChassisTypes: " + (objItem.ChassisTypes.toArray()).join(",")); }
        catch(e) {}
        if (objItem.CreationClassName) Result.push("CreationClassName: " + objItem.CreationClassName);
        if (objItem.CurrentRequiredOrProduced) Result.push("CurrentRequiredOrProduced: " + objItem.CurrentRequiredOrProduced);
        if (objItem.Depth) Result.push("Depth: " + objItem.Depth);
        if (objItem.Description) Result.push("Description: " + objItem.Description);
        if (objItem.HeatGeneration) Result.push("HeatGeneration: " + objItem.HeatGeneration);
        if (objItem.Height) Result.push("Height: " + objItem.Height);
        if (objItem.HotSwappable) Result.push("HotSwappable: " + objItem.HotSwappable);
        Result.push("InstallDate: " + WMIDateStringToDate(objItem.InstallDate));
        if (objItem.LockPresent) Result.push("LockPresent: " + objItem.LockPresent);
        if (objItem.Manufacturer) Result.push("Manufacturer: " + objItem.Manufacturer);
        if (objItem.Model) Result.push("Model: " + objItem.Model);
        if (objItem.Name) Result.push("Name: " + objItem.Name);
        if (objItem.NumberOfPowerCords) Result.push("NumberOfPowerCords: " + objItem.NumberOfPowerCords);
        if (objItem.OtherIdentifyingInfo) Result.push("OtherIdentifyingInfo: " + objItem.OtherIdentifyingInfo);
        if (objItem.PartNumber) Result.push("PartNumber: " + objItem.PartNumber);
        if (objItem.PoweredOn) Result.push("PoweredOn: " + objItem.PoweredOn);
        if (objItem.Removable) Result.push("Removable: " + objItem.Removable);
        if (objItem.Replaceable) Result.push("Replaceable: " + objItem.Replaceable);
        if (objItem.SecurityBreach) Result.push("SecurityBreach: " + objItem.SecurityBreach);
        if (objItem.SecurityStatus) Result.push("SecurityStatus: " + objItem.SecurityStatus);
        if (objItem.SerialNumber) Result.push("SerialNumber: " + objItem.SerialNumber);
        try {Result.push("ServiceDescriptions: " + (objItem.ServiceDescriptions.toArray()).join(",")); }
        catch(e) {}
        try {Result.push("ServicePhilosophy: " + (objItem.ServicePhilosophy.toArray()).join(",")); }
        catch(e) {}
        if (objItem.SKU) Result.push("SKU: " + objItem.SKU);
        if (objItem.SMBIOSAssetTag) Result.push("SMBIOSAssetTag: " + objItem.SMBIOSAssetTag);
        if (objItem.Status) Result.push("Status: " + objItem.Status);
        if (objItem.Tag) Result.push("Tag: " + objItem.Tag);
        try {Result.push("TypeDescriptions: " + (objItem.TypeDescriptions.toArray()).join(",")); }
        catch(e) {}
        if (objItem.Version) Result.push("Version: " + objItem.Version);
        if (objItem.VisibleAlarm) Result.push("VisibleAlarm: " + objItem.VisibleAlarm);
        if (objItem.Weight) Result.push("Weight: " + objItem.Weight);
        if (objItem.Width) Result.push("Width: " + objItem.Width);
        }

    Result.push("============================")
    Result.unshift("\r\nCOMPUTER INFO\r\n============================" );
    return Result.join("\r\n");
}

function ExportAddRemoveProgramsDataToFile(FilePath)
{
    var Postfix =  /Windows 7/i.test(DetectWindowsVersion())?" /y":"";
    FilePath = FilePath || "%TMP%\\~SDPASDSDPROGSQW.tmp";
    var e, Command = 'REG EXPORT "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall" "'+FilePath+'"'+Postfix;
    try {WshShell.Run(Command,0,1);} catch (e) {};
    
//    Echo(Command);
    return WshShell.ExpandEnvironmentStrings(FilePath);
}

function GetInstalledProgramsInformation()
{
    var Result=[];
    
    function c(r, r1)
    {
        Result.push(r1);
    }
    
    var ADODBStream = WScript.CreateObject("ADODB.Stream");
    ADODBStream.Type = 2;
    ADODBStream.Charset =  "UTF-16LE";
    ADODBStream.Open();
    ADODBStream.LoadFromFile(ExportAddRemoveProgramsDataToFile());
    var Data = ADODBStream.ReadText();
    WScript.Echo(Data);
    Data.replace(/"DisplayName"="([^"]+)"/gi, c);
    
    
    Result = Result.sort();
    Result.push("============================")
    Result.unshift("\r\nINSTALLED PROGRAMS:","============================");

    return Result.join("\r\n");
}

var TextFileName = "%TMP%\\Info.txt";

var Text = CreateTextFile(TextFileName);
Text.WriteLine(DetectWindowsVersion());
Text.WriteLine(GetUserName());
Text.WriteLine(GetDrivesInformation());
Text.WriteLine(GetProcessInformation());
Text.WriteLine(GetComputerInformation());
Text.WriteLine(GetInstalledProgramsInformation());
Text.Close();

WshShell.Run("notepad %TMP%\\info.txt", 1, 1);

TextFileName = WshShell.ExpandEnvironmentStrings(TextFileName);
FSO.GetFile(TextFileName).Delete(true);