function OnInit(initData) { initData.name = 'PowerShellDiskInfo'; initData.version = '2024-08-17'; initData.url = 'https://resource.dopus.com/c/buttons-scripts/16'; initData.desc = ''; initData.default_enable = true; initData.min_version = '12.0'; } function OnAddColumns(addColData) { AddCol('AllocatedSize'); AddCol('BusType'); AddCol('CanPool'); AddCol('DeviceID'); AddCol('FirmwareVersion'); AddCol('FriendlyName'); AddCol('HealthStatus'); AddCol('IsBootDisk'); AddCol('IsSystemDisk'); AddCol('LogicalSectorSize'); AddCol('MediaType'); AddCol('Model'); AddCol('Number'); AddCol('OperationalDetails'); AddCol('OperationalStatus'); AddCol('PartitionStyle'); AddCol('PhysicalSectorSize'); AddCol('PowerProtected'); AddCol('SerialNumber'); AddCol('Size'); AddCol('SpindleSpeed'); AddCol('UniqueId'); AddCol('Usage'); AddCol('DriveId'); function AddCol(name) { //, type var col = addColData.AddColumn(); col.name = name; col.method = 'OnColumn'; // col.header = 'PowerShellDiskInfo'; // col.label = 'PowerShellDiskInfo'; // col.autogroup = false; // col.justify = 'center'; // col.justify = 'left'; // col.justify = 'path'; // col.justify = 'right'; // col.match.push_back(''); // col.match.push_back(ValueString(true)); // col.match.push_back(ValueString(false)); col.multicol = true; // col.type = 'date'; // col.type = 'datetime'; // col.type = 'number'; // col.type = 'double'; // col.type = 'time'; // col.defwidth = 6; // col.autorefresh = 1; } } function OnColumn(scriptColData) { var item = scriptColData.item; // if (item.is_dir) return; // if (item.path.drive == 0) return; var tab = scriptColData.tab; var fsu = DOpus.FSUtil(); var stt = DOpus.Create().StringTools(); var wsh = new ActiveXObject('WScript.Shell'); // DOpus.Output(fsu.DisplayName(tab.path)); // This PC if (!tab.vars.Exists('PSDI')) QueryPowerShell(); var arr = tab.vars.Get('PSDI'); var deviceID = item.path.drive; for (var i = 1; i < arr.length; i++) { if (arr[i] && arr[i][3] == deviceID) { scriptColData.columns('AllocatedSize').value = arr[i][0]; scriptColData.columns('BusType').value = arr[i][1]; scriptColData.columns('CanPool').value = arr[i][2]; scriptColData.columns('DeviceID').value = arr[i][3]; scriptColData.columns('FirmwareVersion').value = arr[i][4]; scriptColData.columns('FriendlyName').value = arr[i][5]; scriptColData.columns('HealthStatus').value = arr[i][6]; scriptColData.columns('IsBootDisk').value = arr[i][7]; scriptColData.columns('IsSystemDisk').value = arr[i][8]; scriptColData.columns('LogicalSectorSize').value = arr[i][9]; scriptColData.columns('MediaType').value = arr[i][10]; scriptColData.columns('Model').value = arr[i][11]; scriptColData.columns('Number').value = arr[i][12]; scriptColData.columns('OperationalDetails').value = arr[i][13]; scriptColData.columns('OperationalStatus').value = arr[i][14]; scriptColData.columns('PartitionStyle').value = arr[i][15]; scriptColData.columns('PhysicalSectorSize').value = arr[i][16]; scriptColData.columns('PowerProtected').value = arr[i][17]; scriptColData.columns('SerialNumber').value = arr[i][18]; scriptColData.columns('Size').value = arr[i][19]; scriptColData.columns('SpindleSpeed').value = arr[i][20]; scriptColData.columns('UniqueId').value = arr[i][21]; scriptColData.columns('Usage').value = arr[i][22]; scriptColData.columns('DriveId').value = arr[i][23]; } } function QueryPowerShell() { DOpus.Output('QueryPowerShell'); // var fsu = DOpus.FSUtil(); var tmpFilePath = fsu.GetTempFilePath(); DOpus.Output('tmpFilePath: ' + tmpFilePath); var cmdLine = 'powershell' + ' -command' + ' "' + 'Get-PhysicalDisk' + ' | Select-Object' + ' AllocatedSize,' + ' BusType,' + ' CanPool,' + ' DeviceID,' + ' FirmwareVersion,' + ' FriendlyName,' + ' HealthStatus,' + ' IsBootDisk,' + ' IsSystemDisk,' + ' LogicalSectorSize,' + ' MediaType,' + ' Model,' + ' Number,' + ' OperationalDetails,' + ' OperationalStatus,' + ' PartitionStyle,' + ' PhysicalSectorSize,' + ' PowerProtected,' + ' SerialNumber,' + ' Size,' + ' SpindleSpeed,' + ' UniqueId,' + ' Usage,' + ' DriveId' + ' | Export-Csv' + ' -Path \'' + tmpFilePath + '\'' + ' -Delimiter `t' + ' -NoTypeInformation' + '"'; // DOpus.Output(cmdLine); wsh.Run(cmdLine, 0, true); var tmpFile = fsu.GetItem(tmpFilePath).Open(); var arrFile = stt.Decode(tmpFile.Read(), 'utf8').replace(/"/gm, '').split('\r\n'); tmpFile.Close(); // arrFile.splice(0,1); // arrFile.shift(); // arrFile.sort(function (a, b) { return a - b }); for (var i = 0; i < arrFile.length; i++) { // DOpus.Output(i + '\t\tLen=' + arrFile[i].length); // arrFile[i] = arrFile[i].replace(/"/gm, ''); if (!arrFile[i]) continue; arrFile[i] = arrFile[i].split('\t'); DOpus.Output(i + '\t\t' + arrFile[i][3] + '\t' + arrFile[i][5] + '\t' + arrFile[i][21]); } tab.vars.Set('PSDI') = arrFile; } }