 Rank: Member Medals:  Joined: 5/13/2014(UTC) Posts: 28  Location: Texas Thanks: 29 times Was thanked: 6 time(s) in 4 post(s)
|
Thanks @TheScottyQ! I've taken your modifications and expanded on it a little to include Antivirus installed. The query used is: Quote:get-wmiobject -Namespace "root/SecurityCenter2" -Class AntiVirusProduct | select displayName and Quote:get-wmiobject -Namespace "root/SecurityCenter2" -Class AntiSpywareProduct | select displayName Here is the complete NewInitializer.js file: Code:
var hasSentCommand = false;
SC.event.addGlobalHandler(SC.event.InitializeTab, function (eventArgs) {
if (isGeneralTab(eventArgs.tabName)){
hasSentCommand = false;
//var descriptionList = SC.ui.findDescendentByTag(eventArgs.container, "dl");
var descriptionList = eventArgs.container.firstChild;
SC.ui.addElement(descriptionList, 'dt', {id: 'modelContainer', innerHTML: 'Model :'});
SC.ui.addElement(descriptionList, 'dd', {id: 'modelValueContainer'});
SC.ui.addElement(descriptionList, 'dt', {id: 'manufacturerContainer', innerHTML: 'Manufacturer:'});
SC.ui.addElement(descriptionList, 'dd', {id: 'manufacturerValueContainer'});
SC.ui.addElement(descriptionList, 'dt', {id: 'biosNameContainer', innerHTML: 'BIOS Name:'});
SC.ui.addElement(descriptionList, 'dd', {id: 'biosNameValueContainer'});
SC.ui.addElement(descriptionList, 'dt', {id: 'biosSerialContainer', innerHTML: 'BIOS Serial:'});
SC.ui.addElement(descriptionList, 'dd', {id: 'biosSerialValueContainer'});
SC.ui.addElement(descriptionList, 'dt', {id: 'domainNameContainer', innerHTML: 'Domain:'});
SC.ui.addElement(descriptionList, 'dd', {id: 'domainNameValueContainer'});
SC.ui.addElement(descriptionList, 'dt', {id: 'DHCPEnabledContainer', innerHTML: 'DHCP Enabled:'});
SC.ui.addElement(descriptionList, 'dd', {id: 'DHCPEnabledValueContainer'});
SC.ui.addElement(descriptionList, 'dt', {id: 'DHCPServerContainer', innerHTML: 'DHCP Server:'});
SC.ui.addElement(descriptionList, 'dd', {id: 'DHCPServerValueContainer'});
SC.ui.addElement(descriptionList, 'dt', {id: 'internalIPAddressContainer', innerHTML: 'Internal IP Address:'});
SC.ui.addElement(descriptionList, 'dd', {id: 'internalIPAddressValueContainer'});
SC.ui.addElement(descriptionList, 'dt', {id: 'defaultGatewayContainer', innerHTML: 'Default Gateway:'});
SC.ui.addElement(descriptionList, 'dd', {id: 'defaultGatewayValueContainer'});
SC.ui.addElement(descriptionList, 'dt', {id: 'antivirusContainer', innerHTML: 'Antivirus:'});
SC.ui.addElement(descriptionList, 'dd', {id: 'antivirusValueContainer'});
SC.ui.addElement(descriptionList, 'dt', {id: 'antispywareContainer', innerHTML: 'AntiSpyware:'});
SC.ui.addElement(descriptionList, 'dd', {id: 'antispywareValueContainer'});
}
});
SC.event.addGlobalHandler(SC.event.RefreshTab, function (eventArgs) {
if (isGeneralTab(eventArgs.tabName)) {
SC.ui.clear($('modelValueContainer'));
SC.ui.clear($('manufacturerValueContainer'));
SC.ui.clear($('biosNameValueContainer'));
SC.ui.clear($('biosSerialValueContainer'));
SC.ui.clear($('domainNameValueContainer'));
SC.ui.clear($('DHCPEnabledValueContainer'));
SC.ui.clear($('DHCPServerValueContainer'));
SC.ui.clear($('internalIPAddressValueContainer'));
SC.ui.clear($('defaultGatewayValueContainer'));
SC.ui.clear($('antivirusValueContainer'));
SC.ui.clear($('antispywareValueContainer'));
}
if (isSupportedOperatingSystem(eventArgs.session.GuestOperatingSystemName))
displayInformationRequest(
getLatestInformationRequestEvent(
eventArgs.sessionDetails,
eventArgs.tabName
), eventArgs
);
});
function isSupportedOperatingSystem(operatingSystemName){
if (operatingSystemName.startsWith("Windows") || operatingSystemName.startsWith("Microsoft"))
return true;
else
return false;
}
function sendCommand() {
window.addEventToSessions(
window.getSessionGroupUrlPart()[0],
SC.types.SessionType.Access,
[window.getSessionUrlPart()],
SC.types.SessionEventType.QueuedCommand,
null,
getInputCommand(
"General"
),
false,
false,
true
);
}
function getInputCommand(commandType) {
var headers = getHeaders();
headers.CommandType = commandType;
var commandText = "$computer = get-wmiobject win32_computersystem | select Manufacturer, Model, Domain" + "\n" +
"$bios = get-wmiobject win32_bios | select Name, SerialNumber" + "\n" +
"$av = get-wmiobject -Namespace \"root/SecurityCenter2\" -Class AntiVirusProduct | select displayName" + "\n" +
"$as = get-wmiobject -Namespace \"root/SecurityCenter2\" -Class AntiSpywareProduct | select displayName" + "\n" +
"$network = get-wmiobject Win32_NetworkAdapterConfiguration |Where {$_.ipaddress -notlike $null}| select DHCPEnabled, DHCPServer,IPAddress, DefaultIPGateway" + "\n" +
"write-output $computer.Manufacturer, $computer.Model, $bios.Name, $bios.SerialNumber, $computer.Domain, $network.DHCPEnabled, $network.DHCPServer, $network.IPAddress, $network.DefaultIPGateway, $av.displayName, $as.displayName| ConvertTo-Xml -As Stream";
var emptyLinePrefix = '';
if (headers.Processor == 'sh')
emptyLinePrefix = 'echo ';
else{
emptyLinePrefix = 'echo ""';
commandText = "$Host.UI.RawUI.BufferSize = New-Object Management.Automation.Host.Size (500, 25)" + "\n" + commandText;
}
return "#!" + headers.shaBang + "\n" +
"#maxlength=100000" + "\n" +
"#timeout=90000" + "\n" +
headers.modifier + "INFORMATIONREQUEST-RESPONSE/1" + headers.delimiter + "\n" +
headers.modifier + "CommandType: " + headers.CommandType + headers.delimiter + "\n" +
headers.modifier + "ContentType: " + headers.ContentType + headers.delimiter + "\n" +
emptyLinePrefix + "\n" + commandText;
}
function getHeaders() {
return { Processor: "ps", Interface: "powershell", ContentType: "xml", shaBang: "ps", modifier: "echo \"", delimiter: '\"' };
}
function isGeneralTab(tabName) {
switch (tabName) {
case 'General':
return true;
default:
return false;
}
}
function isInformationRequestContent(eventData) {
return eventData.startsWith("INFORMATIONREQUEST-RESPONSE/1");
}
function getLatestInformationRequestEvent(sessionDetails, CommandEventType) {
return sessionDetails.Connections
.map(function(c) { return c.Events; })
.reduce(function(outputArray, events) { Array.prototype.push.apply(outputArray, events); return outputArray; }, [])
.filter(function(e) {
return e.EventType === SC.types.SessionEventType.RanCommand &&
isInformationRequestContent(e.Data)
})
.sort(function (x, y) { return x.Time - y.Time; })
[0];
}
function parseDataHeaders(eventData) {
var currentIndex = 0;
var headers = {};
var isStatusLine = true;
while (true) {
var nextNewLineIndex = eventData.indexOf('\n', currentIndex);
if (isStatusLine) {
isStatusLine = false;
} else if (nextNewLineIndex == currentIndex + 2 || nextNewLineIndex < 0) {
break;
} else {
var lineParts = eventData.substring(currentIndex, nextNewLineIndex).split(': ');
headers[lineParts[0]] = lineParts[1];
}
currentIndex = nextNewLineIndex + 1;
}
return headers;
}
function displayInformationRequest(latestCommandEvent, eventArgs) {
if (typeof latestCommandEvent === 'undefined' && !hasSentCommand && window.isCommandEnabled("RunCommand", null, [eventArgs.session], eventArgs.session.Permissions)) {
sendCommand();
hasSentCommand = true;
return;
} else {
var headers = parseDataHeaders(latestCommandEvent.Data);
displayCommandData(getEventDataXml(latestCommandEvent.Data));
}
}
function getEventDataXml(eventData) {
return parseXml(eventData.substring(eventData.indexOf('<?xml'), eventData.length));
}
function displayCommandData(xml) {
var x = xml.getElementsByTagName("Object");
if (isUsingInternetExplorerOrEdge())
{
$('manufacturerValueContainer').innerHTML = x[0].childNodes[0].textContent;
$('modelValueContainer').innerHTML = x[1].childNodes[0].textContent;
$('biosNameValueContainer').innerHTML = x[2].childNodes[0].textContent;
$('biosSerialValueContainer').innerHTML = x[3].childNodes[0].textContent;
$('domainNameValueContainer').innerHTML = x[4].childNodes[0].textContent;
$('DHCPEnabledValueContainer').innerHTML = x[5].childNodes[0].textContent;
$('DHCPServerValueContainer').innerHTML = x[6].childNodes[0].textContent;
$('internalIPAddressValueContainer').innerHTML = x[7].childNodes[0].textContent;
$('defaultGatewayValueContainer').innerHTML = x[8].childNodes[0].textContent;
$('antivirusValueContainer').innerHTML = x[9].childNodes[0].textContent;
$('antispywareValueContainer').innerHTML = x[10].childNodes[0].textContent;
} else {
$('manufacturerValueContainer').innerHTML = x[0].innerHTML;
$('modelValueContainer').innerHTML = x[1].innerHTML;
$('biosNameValueContainer').innerHTML = x[2].innerHTML;
$('biosSerialValueContainer').innerHTML = x[3].innerHTML;
$('domainNameValueContainer').innerHTML = x[4].innerHTML;
$('DHCPEnabledValueContainer').innerHTML = x[5].innerHTML;
$('DHCPServerValueContainer').innerHTML = x[6].innerHTML;
$('internalIPAddressValueContainer').innerHTML = x[7].innerHTML;
$('defaultGatewayValueContainer').innerHTML = x[8].innerHTML;
$('antivirusValueContainer').innerHTML = x[9].innerHTML;
$('antispywareValueContainer').innerHTML = x[10].innerHTML;
}
}
function parseXml(xml) {
var dom = null;
if (window.DOMParser) {
try {
dom = (new DOMParser()).parseFromString(xml, "text/xml");
}
catch (e) { dom = null; }
}
else if (window.ActiveXObject) {
try {
dom = new ActiveXObject('Microsoft.XMLDOM');
dom.async = false;
if (!dom.loadXML(xml)) // parse error ..
window.alert(dom.parseError.reason + dom.parseError.srcText);
}
catch (e) { dom = null; }
}
else
alert("cannot parse xml string!");
return dom;
}
function isUsingInternetExplorerOrEdge() {
var ua = window.navigator.userAgent;
var msie = ua.indexOf("Trident");
if (ua.indexOf("Trident") > 0 || ua.indexOf("Edge") > 0)
return true;
else
return false;
}
IMO, this is one of the reasons extensions need to be kept open, but figure out another way to lock them down for people that want to charge for their extensions. Edited by user Wednesday, January 31, 2018 4:03:09 PM(UTC)
| Reason: typo, formatting of script
|