SlideShare una empresa de Scribd logo
1 de 60
Scripting and Automation 
GFI MAX RemoteManagement 
Mark Petrie, Director of Engineering 
GFI MAX
Scripting and Automation 
» Introduction to scripting in GFI MAX RemoteManagement: 
» Just what EXACTLY do we mean by scripting? 
» Who is using scripting and for what purpose? 
» Using built-in scripts 
» Pro-active Monitoring Checks 
» Automated Maintenance Tasks 
» Using community scripts from fixitscripts.com 
» Find solutions to problems you have 
» Writing your own scripts… 
» Return codes 
» Considerations 
» Getting started 
» Coding guidelines 
» Using the API 
» Examples
Introduction
Just what EXACTLY do we mean by scripting? 
» Upload, deploy, schedule and run scripts for additional: 
» Monitoring Checks (Windows, OSX and Linux) 
» Maintenance Tasks (Windows only) 
» Scripts can be written in variety of common languages: 
» DOS Batch and CMD 
» VBS and Powershell 
» Ruby, Python, Perl and PHP 
» Javascript 
» AppleScript 
» BASH 
» Upload script once, downloaded as required (without Agent update) 
» Very powerful, but also secure: 
» Script source can only be uploaded by superuser 
» Signed (public/private key encryption) when downloaded by Agents
Are people using it? 
» 7.5 million script checks run every day! 
» Over 140,000 monitoring script checks 
» 260,000 maintenance tasks run every day! 
» What is it being used for? 
» Monitoring bespoke applications and hardware 
» Automating onboarding new clients 
• Automating software installation 
• Enforcing standard configurations 
» Regular scheduled maintenance 
» Automated fault resolution
Using built-in scripts
Pro-active Monitoring Checks 
» Deploy as either 24x7 or DSC script check 
» Get alerts and view results in Dashboard and Client Reports 
» Timeout limited to 150 seconds
What Monitoring Checks are already available? 
» Application Control: 
» Running Process 
» System User Count 
» SQL Query 
» Exchange: 
» Large Mailboxes 
» Mail Queue Size 
» Store Control 
» Security Center: 
» Antivirus Status 
» Windows Firewall 
» Windows Update
What Monitoring Checks are already available? 
» Virtualisation: 
» VMware ESXi – Datastore Free Space 
» VMware ESXi Health – CPUs 
» VMware ESXi Health – Fans 
» VMware ESXi Health – Memory 
» VMware ESXi Health – PSUs 
» VMware ESXi Health – Sensors 
» VMware ESXi Health – Storage 
» VMware ESXi – Virtual Machine Inventory 
» VMware ESXi – Virtual Machine Power State
Monitoring Datastore Free Space and Storage Health
Monitoring running VMs
Monitoring VM resource usage
Automated Maintenance Tasks 
» Upload script to Dashboard 
» Deploy site wide or to individual workstations and servers 
» Schedule once per day, week or month 
» Run in response to a failed check 
» View results in Dashboard 
» Automated Tasks Report 
» Timeout per schedule
What Maintenance Tasks are already available? 
» Antivirus: 
» Malwarebytes 
» Sophos Definition Update 
» Application Control: 
» Running Process 
» SQL Query 
» Exchange: 
» Store Control 
» Clean-Up: 
» Clean Temp Files 
» Clear Event Log 
» Defrag 
» Windows 
» Schedule Reboot 
» Service Control 
» Virtualisation 
» VMware ESXi – Virtual Machine Control
Stopping, starting and restarting VMs
Using community scripts
fixitscripts.com 
433 problems / 
requests for scripts 
584 total scripts 
269 scripts tagged 
for MAX RM 
328 PowerShell 
scripts 
Visitors from over 
100 countries 
179 VBScript scripts 
18,420 visitors in 
last 3 months 
797 registered users 
Over 2 minutes 
duration per visit
Using script from fixitscripts.com
Writing your own scripts
Return codes 
» Extend GFI MAX to monitor anything!? 
» Use exit codes to cause check to fail: 
» Exit 0 to cause check to pass 
» Exit non-zero to cause check to fail 
» Exit >1000 to display text output in Dashboard 
» Batch 
echo “Error Message” 
exit 1001 
» VBS 
wscript.echo( “Error Message” ) 
wscript.Quit(1001) 
» PowerShell 
Write-Host “Error Message” 
Exit 1001
Considerations and Limitations
Local system account 
» User context (Session Zero) 
» No user interaction 
» No network Resources
Environment Variables 
» Command line arguments solve this…
Timeouts
Getting started
Documentation
Don’t reinvent the wheel! 
» Steal Learn from Others Scripts 
» fixitscripts.com 
» GFI Forum 
» LinkedIn 
» Google! 
» Identify the problem trying to solve 
» Look at ServiceDesk – where is time being spent on tickets 
» Check Google (Why reinvent the wheel?) 
» Investigate using tools (ProcessMonitor, ProcessExplorer, etc) 
» Find Applications/Commands 
» Command Switches 
» Use previous scripts as a template and import into GFI MAX
Example from LinkedIn (service recovery)
Example from LinkedIn (service recovery)
Script writing guidelines
Visual Basic and Powershell 
» Visual Basic Script fully supported since Windows 2000 
» Powershell supported from WindowsXP onwards 
» May need to be installed on some older systems 
» Using Windows Script Host WScript object, you can access: 
» Arguments passed to script 
» Command Line Shell 
» File System 
» Registry 
» Services 
» Network (not if running as Local System Account) 
» VBS can also access Windows Management Instrumentation
Script structure 
» Clearly identify problem trying solve 
» Any script needs to do the following: 
» Declare variables to be used 
» Parse command line arguments 
» Interact with Windows or Application 
» Handle any errors 
» Return results
Declaring variables and constants 
» Good practice to force all variables to be declared before use 
» Use g_ to indicate global variables and clarify variable scope 
» Use type hinting to indicate variables intended purpose 
» Use Constants for magic numbers that won’t change 
' Usage: { start | stop | restart } "Service Name“ 
Option Explicit 
Dim g_oArgs, g_nMode, g_sServiceName 
Const MODE_START = 101 
Const MODE_STOP = 102 
Const MODE_RESTART = 103
Command Line Arguments 
» Arguments passed into script via command line can be used to: 
» Control behaviour of script (for example: action to perform) 
» Pass in the target of script (for example: service to restart) 
» Setup additional environment variables (If not available to Local System) 
» Advantages over hard-coding script behaviour and target? 
» Common code (e.g. connect to service manager) can be reused 
» Reduces number of scripts and improves maintainability of library
Command Line Arguments 
» Accessing arguments: 
» DOS Batch uses %1, %2 etc (note %0 is name of script) 
» Linux shell scripts (BASH) use $1, $2 etc ($0 is name of script) 
» Dynamic langauges (Perl, PHP) use $argc (count) and @argv (array) 
» VBS uses WScript.Arguments object: 
• WScript.Arguments.Count method gives number of arguments 
• WScript.Arguments(0) is first argument etc 
» Scripts ran by Advanced Monitoring Agent: 
» Two arguments are always appended to command line (for debug) 
» -logfile logname can be ignored
Command Line Arguments 
' Usage: { start | stop | restart } "Service Name“ 
Set g_oArgs = WScript.Arguments 
If g_oArgs.Count < 2 Then 
WScript.Echo "Invalid Arguments" 
WScript.Quit(1) 
End If 
Select Case g_oArgs(0) 
Case "start" 
g_nMode = MODE_START 
Case "stop" 
g_nMode = MODE_STOP 
Case "restart" 
g_nMode = MODE_RESTART 
Case Else 
WScript.Echo "Invalid Args" 
WScript.Quit(1) 
End Select 
g_sServiceName = g_oArgs(1)
Interacting with applications 
» Windows Script Host can run applications on local system 
» Application has status 0 until it terminates 
Set g_oShell = WScript.CreateObject("WScript.Shell") 
Set g_oRunningApp = g_oShell.Exec( "c:/path/to/my.exe arg0 arg1" ) 
Do While g_oRunningApp.Status = 0 
WScript.Sleep 100 
Loop 
WScript.Echo "Application Terminated“ 
» Application will be ran as user Agent running under (Local System Acc) 
» Any pop-up or user intervention will likely cause script timeout
Interacting with file system 
• Create a File System Object to access any file or directory listing 
Set g_oFileSystem = CreateObject( "Scripting.FileSystemObject" ) 
Set g_oTextFile = g_oFileSystem.OpenTextFile( "c:test.txt", 1 ) 
Do Until g_oTextFile.AtEndOfStream 
g_sNextLine = g_oTextFile.Readline 
WScript.Echo g_sNextLine 
Loop 
• Use regular expressions to parse file contents 
Set oRegExp = New RegExp 
oRegExp.Pattern = "^GETd.pdf$" 
Do Until oTextFile.AtEndOfStream 
sCurrentLine = oTextFile.Readline 
If oRegExp.Test( sCurrentLine ) Then 
nAccessed = nAccessed + 1 
End If 
Loop 
• Regular expressions can also be used to extract or replace matches
Interacting with registry 
» Registry stores config and management information of OS and Apps 
» Hierarchical organisation of keys and values (like filesystem) 
» A key can store many other keys. 
» A key can have default data. 
» A value can only store data and cannot store other values or keys 
» Data types of values must be explicitly set on creation 
» REG_BINARY – Binary Data (0’s and 1’s) 
» REG_DWORD – Double Word (Numeric, up to 32bit values) 
» REG_QWORD – Quadruple Word (Numeric, up to 64bit values) 
» REG_MULTI_SZ – A Set of Strings 
» Retrieve a value from Registry using RegRead (e.g. path to application) 
Set g_oShell = WScript.CreateObject ("WScript.Shell") 
g_sMBAMLocation = g_oShell.RegRead _ 
("HKLMSOFTWAREMicrosoftWindowsCurrentVersionApp Pathsmbam.exe") 
» Write a value to registry using RegWrite (e.g. reconfigure an application) 
g_oShell.RegWrite ( “key_location”, “value”, “key_type” )
Handling errors 
» On Error GoTo 0 (default) 
» Will cause script to exit, use only for fatal non-recoverable errors 
» On Error Resume Next 
» Will cause script execution to continue, allowing you to handle error 
» Err variable set to last error code 
» Script follows rule until presented with another error handing instruction 
» The scope of rule is per sub-routine only 
» Use function to handle errors consistently 
Function stHandleFatalError( innExitCode, insMsg ) 
If Err.Number <> 0 Then 
Err.Clear 
On Error GoTo 0 
WScript.Echo insMsg 
Wscript.Quit innExitCode 
End If 
On Error Resume Next 
Err.Clear 
End Function
Return results to Dashboard 
» Use exit codes to cause check to fail: 
» Exit 0 to cause check to pass 
» Exit non-zero to cause check to fail 
» Exit >1000 to display text output in Dashboard 
» Batch 
echo “Error Message” 
exit 1001 
» VBS 
wscript.echo( “Error Message” ) 
wscript.Quit(1001) 
» PowerShell 
Write-Host “Error Message” 
Exit 1001
Putting it all together 
Option Explicit 
Dim g_oWindowsFirewall 
On Error Resume Next 
Set g_oWindowsFirewall = WScript.CreateObject( "HNetCfg.FwMgr" ) 
stHandleFatalError 2001, "Unable to create Firewall object" 
If g_oWindowsFirewall.LocalPolicy.CurrentProfile.FirewallEnabled = 1 Then 
WScript.Echo "Windows Firewall Enabled" 
WScript.Quit ( 0 ) 
Else 
WScript.Echo "Windows Firewall Disabled" 
WScript.Quit ( 2000 ) 
End If 
Function stHandleFatalError( innExitCode, insMsg ) 
If Err.Number <> 0 Then 
Err.Clear 
On Error GoTo 0 
WScript.Echo insMsg 
Wscript.Quit innExitCode 
End If 
On Error Resume Next 
Err.Clear 
End Function
Windows Management Instrumentation 
» WMI allows access to almost all Windows components 
» Make modifications to settings and initiate operations 
» For example, check Print Spooler is running… 
sServiceName = "Spooler" 
sComputer = "." 
On Error Resume Next 
Set oWMIService = GetObject("winmgmts:" & strComputer & "rootCIMV2") 
stHandleFatalError( ERROR_CREATEOBJECT_WMI ) 
Set oService = oWMIService.Get("Win32_Service.Name='" & sServiceName & "'") 
If oService.State = "Running" Then 
WScript.Echo "Print Spooler is Running" 
WScript.Quit ( 0 ) 
Else 
' Restart Service etc...
Windows Management Instrumentation 
http://msdn.microsoft.com/en-us/library/aa394554(v=vs.85).aspx
Scripting and API
Getting the data you need from API 
» Used mainly to get data out of GFI MAX RemoteManagement 
» Easy to manipulate with PowerShell: 
$apikey = “YOUR API KEY" 
$clientsurl = "https://www.systemmonitor.us/api/?apikey=$apikey&service=list_clients" 
[xml]$xmlclients = (new-object System.Net.WebClient).DownloadString($clientsurl) 
» Example Uses: 
» Getting serial number data 
» Getting MAC addresses for Wake-on-LAN 
» See online help system for full instructions
Example: Workstations that have not been scanned in 90 days 
$apikey = "YOUR API KEY" 
$CurrDate = Get-Date 
$clientsurl = "https://www.systemmonitor.us/api/?apikey=$apikey&service=list_clients" 
$wstable = @() 
[xml]$xmlclients = (new-object System.Net.WebClient).DownloadString($clientsurl) 
foreach ($xmlclientslist in $xmlclients.result.items.client) { 
$clientid = $xmlclientslist.clientid 
$sitesurl="https://www.systemmonitor.us/api/? 
apikey=$apikey&service=list_sites&clientid=$clientid" 
[xml]$xmlsites = (new-object System.Net.WebClient).DownloadString($sitesurl) 
foreach ($xmlsiteslist in $xmlsites.result.items.site) { 
$siteid = $xmlsiteslist.siteid 
$wsurl = "https://www.hound-dog.us/api/? 
apikey=$apikey&service=list_workstations&siteid=$siteid" 
[xml]$xmlws = (new-object System.Net.WebClient).DownloadString($wsurl) 
foreach ($xmlwslist in $xmlws.result.items.workstation) { 
[datetime]$wsdate = $xmlwslist.last_scan_time 
if (($CurrDate).Subtract($wsdate).Days -gt 90) { 
$wsObj = "" | select Client,WSName,Age 
$wsObj.Client = $xmlclientslist.name."#cdata-section" 
$wsObj.WSName = $xmlwslist.name."#cdata-section" 
$wsObj.Age = ($CurrDate).Subtract($wsdate).Days 
$wstable += $wsObj 
}}}}
Example: Wake devices before patching 
param($siteid) 
$apikey = "Put your API Key here“ 
$apiurl = “https://www.systemmonitor.us/api/?apikey=$apikey” 
$url = "$($apiurl)&service=list_workstations&siteid=$siteid" 
[xml]$xmlmac = (new-object System.Net.WebClient).DownloadString($url) 
foreach ($xmlmacws in $xmlmac.result.items.workstation) { 
$macString = $xmlmacws.mac1."#cdata-section" 
$mac = $macString.split(':') | %{ [byte]('0x' + $_) } 
$UDPclient = new-Object System.Net.Sockets.UdpClient 
$UDPclient.Connect(([System.Net.IPAddress]::Broadcast),4000) 
$packet = [byte[]](,0xFF * 6) 
$packet += $mac * 16 
[void] $UDPclient.Send($packet, $packet.Length) 
write-output "Wake-On-Lan magic packet of length $($packet.Length) sent to 
$macString" 
}
Real-world examples
Real-world examples 
» Custom Monitoring 
» Automate repetitive tasks 
» Onboarding new clients 
» Software installation 
» Preventing tickets
Custom Monitoring 
» Check current time vs. NTP server 
$ntpcheck = w32tm /stripchart /dataonly /computer:pool.ntp.org /samples:1 
[int]$ntpchecktime = $($ntpcheck.Split()[-1]).Split("s")[0].Substring("1") 
Write-Output "$ntpchecktime seconds" 
if ($ntpchecktime -gt 300) { 
Write-Output "Check failed" 
Exit 1001 
}
Onboarding new clients 
» Make sure all of your standards are enforced from the start 
» Install and configure SNMP 
» Software deployment 
» Enable RDP 
» Enable Wake on LAN 
» Open ports in the firewall
Install and configure SNMP 
cmd /c Servermanagercmd -install SNMP-Services 
reg add HKEY_LOCAL_MACHINESYSTEMCurrentControlSet 
servicesSNMPParametersValidCommunities /v ROString /t 
REG_DWORD /d 4 /f 
reg delete HKEY_LOCAL_MACHINESYSTEMCurrentControlSet 
ServicesSNMPParametersPermittedManagers /f 
Stop-Service -Name SNMP 
Start-Service -Name SNMP
Software deployment 
» Download MSI or EXE and use silent switches to install software 
» Host on your website, Dropbox, or similar file storage solution 
» Silent switches are typically available with software documentation 
» MSI install files always use msiexec with the same switches for installation 
Msiexec /I {filepath} /quiet /qn /norestart REBOOT=reallysuppress 
» Check HKLMSoftwareMicrosoftWindowsUninstall for MSI uninstall string. Add /quiet to 
switch to make quiet 
Msiexec /I {filepath} /quiet /qn /norestart REBOOT=reallysuppress
Download and install OpenManage 
$file_url = "http://downloads-us.dell.com/FOLDER00574377M/1/OM-SrvAdmin-Dell- 
Web-WIN-7.1.0-5304_A00.exe" 
$file_name = "OMSA-6.5.0-2247_A01.exe" 
$numafiles_path = "$Env:SystemDriveNumaNetworks" 
if ((Test-Path $numafiles_path) -eq $false) { 
New-Item -type directory -Path $numafiles_path | Out-Null 
} 
if ((Test-Path "$numafiles_path$($file_name)") -eq $false) { 
$file_dload_file = "$numafiles_path$($file_name)" 
$file_dload = new-object System.Net.WebClient 
$file_dload.DownloadFile($file_url,$file_dload_file) 
cmd /c $numafiles_path$file_name /auto $numafiles_pathOpenManage 
} 
cmd /c msiexec /i 
$numafiles_pathOpenManageWindowsSystemsManagementSysMgmt.msi 
/quiet /norestart
Preventing tickets 
» Fix problems detected by your monitoring scripts 
» Reduce the amount of tickets coming into your helpdesk 
» Setup using an automated task 
» Don’t run at a specified time, run at a specified event 
» Able to run at the failure of most checks (Service, Event, AV Update) 
» Script will run at next 24/7 check-in following failure 
» Examples: 
» Clear and start print spooler when service stops 
» Force AV definition update when definitions are old 
» Run disk cleanups when disk gets full
Clear Print Spooler and restart service 
Set objShell = CreateObject("WScript.Shell") 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!"_ 
& “.rootcimv2") 
SpoolDirectory = objShell.RegRead("HKLMSystemCurrentControlSet"_ 
& "ControlPrintPrintersDefaultSpoolDirectory") 
Set objFolder = objFSO.GetFolder(SpoolDirectory) 
For Each objFile In objFolder.Files 
WScript.Echo "Deleteing "+objFile.Name 
objFile.Delete(Force) 
Next 
Set objSpooler = objWMIService.Get("Win32_Service='spooler'") 
If objSpooler.State = "Stopped" Then 
WScript.Echo "Starting Spooler." 
objSpooler.StartService() 
End If
Summary
Summary 
» Scripting allows you to extend monitoring and automate maintenance 
» 7.5 million script checks and 260,000 maintenance tasks run every day 
» Built-in scripts available to add now with no programming knowledge required 
» Hundreds of community scripts available on fixitscripts.com for you to use 
» If you do want to write your own scripts 
» Ensure script returns appropriate return code for pass/fail 
» See script writing guidelines in help system 
» Borrow and build on top of other scripts 
» Save time onboarding new clients, automating maintenance and preventing tickets 
» Check your ServiceDesk for where time is being spent on tickets
Thank You 
Conferences.gfimax.com/app

Más contenido relacionado

Destacado

Top 5 Tips to Increase Field Service Technician Utilization
Top 5 Tips to Increase Field Service Technician UtilizationTop 5 Tips to Increase Field Service Technician Utilization
Top 5 Tips to Increase Field Service Technician UtilizationServiceMax
 
ExactTarget Training: Personalization & AMPscript
ExactTarget Training: Personalization & AMPscriptExactTarget Training: Personalization & AMPscript
ExactTarget Training: Personalization & AMPscriptDEG
 
Arte quimbaya
Arte quimbayaArte quimbaya
Arte quimbayaladymami
 
5 mohammad chamani
5 mohammad chamani5 mohammad chamani
5 mohammad chamaniDheeraj Vasu
 
Presentación terminada
Presentación terminadaPresentación terminada
Presentación terminadaAlexBros360
 
14 Latest Modern décor ideas with my Heaing Art
14 Latest Modern décor ideas with my Heaing Art14 Latest Modern décor ideas with my Heaing Art
14 Latest Modern décor ideas with my Heaing ArtMrs Rizwana A Mundewadi
 
Final digital marketing strategy
Final digital marketing strategyFinal digital marketing strategy
Final digital marketing strategyKallieRiopelle
 
Relatório intenção de compras - Natal 2015
Relatório intenção de compras - Natal 2015Relatório intenção de compras - Natal 2015
Relatório intenção de compras - Natal 2015diario_catarinense
 
2015/09/28付 オリジナルiTunes週間トップソングトピックス
2015/09/28付 オリジナルiTunes週間トップソングトピックス2015/09/28付 オリジナルiTunes週間トップソングトピックス
2015/09/28付 オリジナルiTunes週間トップソングトピックスThe Natsu Style
 
Google in education_uk_summit_2013
Google in education_uk_summit_2013Google in education_uk_summit_2013
Google in education_uk_summit_2013Dan Taylor
 
150509 npo・ngoの組織基盤強化のためのワークショップin岡山 進行スライド
150509 npo・ngoの組織基盤強化のためのワークショップin岡山 進行スライド150509 npo・ngoの組織基盤強化のためのワークショップin岡山 進行スライド
150509 npo・ngoの組織基盤強化のためのワークショップin岡山 進行スライド特定非営利活動法人 岡山NPOセンター
 
Iskf Seminario Master Yaguchi 2013
Iskf Seminario Master Yaguchi 2013Iskf Seminario Master Yaguchi 2013
Iskf Seminario Master Yaguchi 2013Jorge Noceda Moreno
 
We>Me New Jersey Library Association Presentation 2012
We>Me New Jersey Library Association Presentation 2012We>Me New Jersey Library Association Presentation 2012
We>Me New Jersey Library Association Presentation 2012Patrick "PC" Sweeney
 

Destacado (16)

Top 5 Tips to Increase Field Service Technician Utilization
Top 5 Tips to Increase Field Service Technician UtilizationTop 5 Tips to Increase Field Service Technician Utilization
Top 5 Tips to Increase Field Service Technician Utilization
 
ExactTarget Training: Personalization & AMPscript
ExactTarget Training: Personalization & AMPscriptExactTarget Training: Personalization & AMPscript
ExactTarget Training: Personalization & AMPscript
 
IPR
IPRIPR
IPR
 
Arte quimbaya
Arte quimbayaArte quimbaya
Arte quimbaya
 
5 mohammad chamani
5 mohammad chamani5 mohammad chamani
5 mohammad chamani
 
Presentación terminada
Presentación terminadaPresentación terminada
Presentación terminada
 
14 Latest Modern décor ideas with my Heaing Art
14 Latest Modern décor ideas with my Heaing Art14 Latest Modern décor ideas with my Heaing Art
14 Latest Modern décor ideas with my Heaing Art
 
Final digital marketing strategy
Final digital marketing strategyFinal digital marketing strategy
Final digital marketing strategy
 
Relatório intenção de compras - Natal 2015
Relatório intenção de compras - Natal 2015Relatório intenção de compras - Natal 2015
Relatório intenção de compras - Natal 2015
 
2015/09/28付 オリジナルiTunes週間トップソングトピックス
2015/09/28付 オリジナルiTunes週間トップソングトピックス2015/09/28付 オリジナルiTunes週間トップソングトピックス
2015/09/28付 オリジナルiTunes週間トップソングトピックス
 
Google in education_uk_summit_2013
Google in education_uk_summit_2013Google in education_uk_summit_2013
Google in education_uk_summit_2013
 
Test
TestTest
Test
 
150509 npo・ngoの組織基盤強化のためのワークショップin岡山 進行スライド
150509 npo・ngoの組織基盤強化のためのワークショップin岡山 進行スライド150509 npo・ngoの組織基盤強化のためのワークショップin岡山 進行スライド
150509 npo・ngoの組織基盤強化のためのワークショップin岡山 進行スライド
 
Iskf Seminario Master Yaguchi 2013
Iskf Seminario Master Yaguchi 2013Iskf Seminario Master Yaguchi 2013
Iskf Seminario Master Yaguchi 2013
 
We>Me New Jersey Library Association Presentation 2012
We>Me New Jersey Library Association Presentation 2012We>Me New Jersey Library Association Presentation 2012
We>Me New Jersey Library Association Presentation 2012
 
Assignment 1 Draft
Assignment 1 DraftAssignment 1 Draft
Assignment 1 Draft
 

Similar a Scripting and Automation within the MAX Platform - Mark Petrie

Elixir Into Production
Elixir Into ProductionElixir Into Production
Elixir Into ProductionJamie Winsor
 
Proper logging can catch breaches like retail PoS
Proper logging can catch breaches like retail PoSProper logging can catch breaches like retail PoS
Proper logging can catch breaches like retail PoSMichael Gough
 
Proper logging can catch breaches like retail PoS
Proper logging can catch breaches like retail PoSProper logging can catch breaches like retail PoS
Proper logging can catch breaches like retail PoSMichael Gough
 
Windows Remote Management - EN
Windows Remote Management - ENWindows Remote Management - EN
Windows Remote Management - ENKirill Nikolaev
 
Going Serverless with Java - a real life story
Going Serverless with Java - a real life storyGoing Serverless with Java - a real life story
Going Serverless with Java - a real life storyHerman Lintvelt
 
Using Apache as an Application Server
Using Apache as an Application ServerUsing Apache as an Application Server
Using Apache as an Application ServerPhil Windley
 
Azure Cosmos DB - The Swiss Army NoSQL Cloud Database
Azure Cosmos DB - The Swiss Army NoSQL Cloud DatabaseAzure Cosmos DB - The Swiss Army NoSQL Cloud Database
Azure Cosmos DB - The Swiss Army NoSQL Cloud DatabaseBizTalk360
 
Sneaking Past Device Guard - HITB19AMS
Sneaking Past Device Guard - HITB19AMSSneaking Past Device Guard - HITB19AMS
Sneaking Past Device Guard - HITB19AMSPhilip Tsukerman
 
DevOps Fest 2019. Игорь Фесенко. DevOps: Be good, Get good or Give up
DevOps Fest 2019. Игорь Фесенко. DevOps: Be good, Get good or Give upDevOps Fest 2019. Игорь Фесенко. DevOps: Be good, Get good or Give up
DevOps Fest 2019. Игорь Фесенко. DevOps: Be good, Get good or Give upDevOps_Fest
 
540slidesofnodejsbackendhopeitworkforu.pdf
540slidesofnodejsbackendhopeitworkforu.pdf540slidesofnodejsbackendhopeitworkforu.pdf
540slidesofnodejsbackendhopeitworkforu.pdfhamzadamani7
 
Sneaking Past Device Guard
Sneaking Past Device GuardSneaking Past Device Guard
Sneaking Past Device GuardPhilip Tsukerman
 
Azure deployments and ARM templates
Azure deployments and ARM templatesAzure deployments and ARM templates
Azure deployments and ARM templatesgjuljo
 
Yogesh kumar kushwah represent’s
Yogesh kumar kushwah represent’sYogesh kumar kushwah represent’s
Yogesh kumar kushwah represent’sYogesh Kushwah
 
Security DevOps - Free pentesters' time to focus on high-hanging fruits // Ha...
Security DevOps - Free pentesters' time to focus on high-hanging fruits // Ha...Security DevOps - Free pentesters' time to focus on high-hanging fruits // Ha...
Security DevOps - Free pentesters' time to focus on high-hanging fruits // Ha...Christian Schneider
 
How to generate customized java 8 code from your database
How to generate customized java 8 code from your databaseHow to generate customized java 8 code from your database
How to generate customized java 8 code from your databaseSpeedment, Inc.
 
Silicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your databaseSilicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your databaseSpeedment, Inc.
 
AWS re:Invent 2016: Deploying and Managing .NET Pipelines and Microsoft Workl...
AWS re:Invent 2016: Deploying and Managing .NET Pipelines and Microsoft Workl...AWS re:Invent 2016: Deploying and Managing .NET Pipelines and Microsoft Workl...
AWS re:Invent 2016: Deploying and Managing .NET Pipelines and Microsoft Workl...Amazon Web Services
 
Spark Summit - Stratio Streaming
Spark Summit - Stratio Streaming Spark Summit - Stratio Streaming
Spark Summit - Stratio Streaming Stratio
 
What's New in .Net 4.5
What's New in .Net 4.5What's New in .Net 4.5
What's New in .Net 4.5Malam Team
 

Similar a Scripting and Automation within the MAX Platform - Mark Petrie (20)

Elixir Into Production
Elixir Into ProductionElixir Into Production
Elixir Into Production
 
Proper logging can catch breaches like retail PoS
Proper logging can catch breaches like retail PoSProper logging can catch breaches like retail PoS
Proper logging can catch breaches like retail PoS
 
Proper logging can catch breaches like retail PoS
Proper logging can catch breaches like retail PoSProper logging can catch breaches like retail PoS
Proper logging can catch breaches like retail PoS
 
Windows Remote Management - EN
Windows Remote Management - ENWindows Remote Management - EN
Windows Remote Management - EN
 
Going Serverless with Java - a real life story
Going Serverless with Java - a real life storyGoing Serverless with Java - a real life story
Going Serverless with Java - a real life story
 
Using Apache as an Application Server
Using Apache as an Application ServerUsing Apache as an Application Server
Using Apache as an Application Server
 
Azure Cosmos DB - The Swiss Army NoSQL Cloud Database
Azure Cosmos DB - The Swiss Army NoSQL Cloud DatabaseAzure Cosmos DB - The Swiss Army NoSQL Cloud Database
Azure Cosmos DB - The Swiss Army NoSQL Cloud Database
 
Sneaking Past Device Guard - HITB19AMS
Sneaking Past Device Guard - HITB19AMSSneaking Past Device Guard - HITB19AMS
Sneaking Past Device Guard - HITB19AMS
 
DevOps Fest 2019. Игорь Фесенко. DevOps: Be good, Get good or Give up
DevOps Fest 2019. Игорь Фесенко. DevOps: Be good, Get good or Give upDevOps Fest 2019. Игорь Фесенко. DevOps: Be good, Get good or Give up
DevOps Fest 2019. Игорь Фесенко. DevOps: Be good, Get good or Give up
 
540slidesofnodejsbackendhopeitworkforu.pdf
540slidesofnodejsbackendhopeitworkforu.pdf540slidesofnodejsbackendhopeitworkforu.pdf
540slidesofnodejsbackendhopeitworkforu.pdf
 
Sneaking Past Device Guard
Sneaking Past Device GuardSneaking Past Device Guard
Sneaking Past Device Guard
 
Azure deployments and ARM templates
Azure deployments and ARM templatesAzure deployments and ARM templates
Azure deployments and ARM templates
 
Yogesh kumar kushwah represent’s
Yogesh kumar kushwah represent’sYogesh kumar kushwah represent’s
Yogesh kumar kushwah represent’s
 
Security DevOps - Free pentesters' time to focus on high-hanging fruits // Ha...
Security DevOps - Free pentesters' time to focus on high-hanging fruits // Ha...Security DevOps - Free pentesters' time to focus on high-hanging fruits // Ha...
Security DevOps - Free pentesters' time to focus on high-hanging fruits // Ha...
 
Inbot10 vxclass
Inbot10 vxclassInbot10 vxclass
Inbot10 vxclass
 
How to generate customized java 8 code from your database
How to generate customized java 8 code from your databaseHow to generate customized java 8 code from your database
How to generate customized java 8 code from your database
 
Silicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your databaseSilicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your database
 
AWS re:Invent 2016: Deploying and Managing .NET Pipelines and Microsoft Workl...
AWS re:Invent 2016: Deploying and Managing .NET Pipelines and Microsoft Workl...AWS re:Invent 2016: Deploying and Managing .NET Pipelines and Microsoft Workl...
AWS re:Invent 2016: Deploying and Managing .NET Pipelines and Microsoft Workl...
 
Spark Summit - Stratio Streaming
Spark Summit - Stratio Streaming Spark Summit - Stratio Streaming
Spark Summit - Stratio Streaming
 
What's New in .Net 4.5
What's New in .Net 4.5What's New in .Net 4.5
What's New in .Net 4.5
 

Más de MAXfocus

Year of pawnage - Ian trump
Year of pawnage  - Ian trumpYear of pawnage  - Ian trump
Year of pawnage - Ian trumpMAXfocus
 
Delivering Security Within the MAX Remote Management Platform - Todd Haughland
Delivering Security Within the MAX Remote Management Platform - Todd HaughlandDelivering Security Within the MAX Remote Management Platform - Todd Haughland
Delivering Security Within the MAX Remote Management Platform - Todd HaughlandMAXfocus
 
Creating Positive User Experiences Through Technology - Paul Kenny
Creating Positive User Experiences Through Technology - Paul KennyCreating Positive User Experiences Through Technology - Paul Kenny
Creating Positive User Experiences Through Technology - Paul KennyMAXfocus
 
Welcome and MAX Keynotes - Dave Sobel and Alistair Forbes
Welcome and MAX Keynotes   - Dave Sobel and Alistair ForbesWelcome and MAX Keynotes   - Dave Sobel and Alistair Forbes
Welcome and MAX Keynotes - Dave Sobel and Alistair ForbesMAXfocus
 
Closing Keynote - Dave Sobel
Closing Keynote - Dave SobelClosing Keynote - Dave Sobel
Closing Keynote - Dave SobelMAXfocus
 
Maximise Your Reputation in the Marketplace Jason King
Maximise Your Reputation in the Marketplace   Jason KingMaximise Your Reputation in the Marketplace   Jason King
Maximise Your Reputation in the Marketplace Jason KingMAXfocus
 
Consolidating your Services Portfolio with GFI MAX - Jason Parsons and Steve ...
Consolidating your Services Portfolio with GFI MAX - Jason Parsons and Steve ...Consolidating your Services Portfolio with GFI MAX - Jason Parsons and Steve ...
Consolidating your Services Portfolio with GFI MAX - Jason Parsons and Steve ...MAXfocus
 
Managed Services in 2014: Pricing and Positioning - Dave Sobel
Managed Services in 2014: Pricing and Positioning - Dave SobelManaged Services in 2014: Pricing and Positioning - Dave Sobel
Managed Services in 2014: Pricing and Positioning - Dave SobelMAXfocus
 
Delivering Security with the MAX RemoteManagement Platform - Paul Fenwick
Delivering Security with the MAX RemoteManagement Platform -  Paul FenwickDelivering Security with the MAX RemoteManagement Platform -  Paul Fenwick
Delivering Security with the MAX RemoteManagement Platform - Paul FenwickMAXfocus
 
Lessons from the Trenches Selling and Marketing Best Practices Terry Hedden
Lessons from the Trenches Selling and Marketing Best Practices    Terry HeddenLessons from the Trenches Selling and Marketing Best Practices    Terry Hedden
Lessons from the Trenches Selling and Marketing Best Practices Terry HeddenMAXfocus
 
Recruit & Retain Top Talent - Michael Schmditmann
Recruit & Retain Top Talent - Michael SchmditmannRecruit & Retain Top Talent - Michael Schmditmann
Recruit & Retain Top Talent - Michael SchmditmannMAXfocus
 
Lessons from the Worlds Top 5 MSPs MAX2014 - Gordon Tan
Lessons from the Worlds Top 5 MSPs MAX2014 - Gordon Tan Lessons from the Worlds Top 5 MSPs MAX2014 - Gordon Tan
Lessons from the Worlds Top 5 MSPs MAX2014 - Gordon Tan MAXfocus
 
Getting from $400k to $4m - the Four Biggest Operational Challenges - Gordan Tan
Getting from $400k to $4m - the Four Biggest Operational Challenges - Gordan TanGetting from $400k to $4m - the Four Biggest Operational Challenges - Gordan Tan
Getting from $400k to $4m - the Four Biggest Operational Challenges - Gordan TanMAXfocus
 
5 Critical Steps for Selling Managed Services - Adam Harris
5 Critical Steps for Selling Managed Services - Adam Harris 5 Critical Steps for Selling Managed Services - Adam Harris
5 Critical Steps for Selling Managed Services - Adam Harris MAXfocus
 
Max Backup Roadmap and Strategy Presentation - Eric Harless
Max Backup Roadmap and Strategy Presentation - Eric Harless Max Backup Roadmap and Strategy Presentation - Eric Harless
Max Backup Roadmap and Strategy Presentation - Eric Harless MAXfocus
 
How we turned Office 365 from a threat to an opportunity- Dan Scott
How we turned Office 365 from a threat to an opportunity- Dan ScottHow we turned Office 365 from a threat to an opportunity- Dan Scott
How we turned Office 365 from a threat to an opportunity- Dan ScottMAXfocus
 
Delivering Security with GFI MAX - Mark Petrie
Delivering Security with GFI MAX - Mark Petrie  Delivering Security with GFI MAX - Mark Petrie
Delivering Security with GFI MAX - Mark Petrie MAXfocus
 
7 reasons your backups should go to the cloud - Nick Cavalancia
7 reasons your backups should go to the cloud - Nick Cavalancia 7 reasons your backups should go to the cloud - Nick Cavalancia
7 reasons your backups should go to the cloud - Nick Cavalancia MAXfocus
 
The Mysterious Case of the Vanishing Cloud - Seth Robinson
The Mysterious Case of the Vanishing Cloud - Seth Robinson The Mysterious Case of the Vanishing Cloud - Seth Robinson
The Mysterious Case of the Vanishing Cloud - Seth Robinson MAXfocus
 
Christiano Fermo
Christiano Fermo Christiano Fermo
Christiano Fermo MAXfocus
 

Más de MAXfocus (20)

Year of pawnage - Ian trump
Year of pawnage  - Ian trumpYear of pawnage  - Ian trump
Year of pawnage - Ian trump
 
Delivering Security Within the MAX Remote Management Platform - Todd Haughland
Delivering Security Within the MAX Remote Management Platform - Todd HaughlandDelivering Security Within the MAX Remote Management Platform - Todd Haughland
Delivering Security Within the MAX Remote Management Platform - Todd Haughland
 
Creating Positive User Experiences Through Technology - Paul Kenny
Creating Positive User Experiences Through Technology - Paul KennyCreating Positive User Experiences Through Technology - Paul Kenny
Creating Positive User Experiences Through Technology - Paul Kenny
 
Welcome and MAX Keynotes - Dave Sobel and Alistair Forbes
Welcome and MAX Keynotes   - Dave Sobel and Alistair ForbesWelcome and MAX Keynotes   - Dave Sobel and Alistair Forbes
Welcome and MAX Keynotes - Dave Sobel and Alistair Forbes
 
Closing Keynote - Dave Sobel
Closing Keynote - Dave SobelClosing Keynote - Dave Sobel
Closing Keynote - Dave Sobel
 
Maximise Your Reputation in the Marketplace Jason King
Maximise Your Reputation in the Marketplace   Jason KingMaximise Your Reputation in the Marketplace   Jason King
Maximise Your Reputation in the Marketplace Jason King
 
Consolidating your Services Portfolio with GFI MAX - Jason Parsons and Steve ...
Consolidating your Services Portfolio with GFI MAX - Jason Parsons and Steve ...Consolidating your Services Portfolio with GFI MAX - Jason Parsons and Steve ...
Consolidating your Services Portfolio with GFI MAX - Jason Parsons and Steve ...
 
Managed Services in 2014: Pricing and Positioning - Dave Sobel
Managed Services in 2014: Pricing and Positioning - Dave SobelManaged Services in 2014: Pricing and Positioning - Dave Sobel
Managed Services in 2014: Pricing and Positioning - Dave Sobel
 
Delivering Security with the MAX RemoteManagement Platform - Paul Fenwick
Delivering Security with the MAX RemoteManagement Platform -  Paul FenwickDelivering Security with the MAX RemoteManagement Platform -  Paul Fenwick
Delivering Security with the MAX RemoteManagement Platform - Paul Fenwick
 
Lessons from the Trenches Selling and Marketing Best Practices Terry Hedden
Lessons from the Trenches Selling and Marketing Best Practices    Terry HeddenLessons from the Trenches Selling and Marketing Best Practices    Terry Hedden
Lessons from the Trenches Selling and Marketing Best Practices Terry Hedden
 
Recruit & Retain Top Talent - Michael Schmditmann
Recruit & Retain Top Talent - Michael SchmditmannRecruit & Retain Top Talent - Michael Schmditmann
Recruit & Retain Top Talent - Michael Schmditmann
 
Lessons from the Worlds Top 5 MSPs MAX2014 - Gordon Tan
Lessons from the Worlds Top 5 MSPs MAX2014 - Gordon Tan Lessons from the Worlds Top 5 MSPs MAX2014 - Gordon Tan
Lessons from the Worlds Top 5 MSPs MAX2014 - Gordon Tan
 
Getting from $400k to $4m - the Four Biggest Operational Challenges - Gordan Tan
Getting from $400k to $4m - the Four Biggest Operational Challenges - Gordan TanGetting from $400k to $4m - the Four Biggest Operational Challenges - Gordan Tan
Getting from $400k to $4m - the Four Biggest Operational Challenges - Gordan Tan
 
5 Critical Steps for Selling Managed Services - Adam Harris
5 Critical Steps for Selling Managed Services - Adam Harris 5 Critical Steps for Selling Managed Services - Adam Harris
5 Critical Steps for Selling Managed Services - Adam Harris
 
Max Backup Roadmap and Strategy Presentation - Eric Harless
Max Backup Roadmap and Strategy Presentation - Eric Harless Max Backup Roadmap and Strategy Presentation - Eric Harless
Max Backup Roadmap and Strategy Presentation - Eric Harless
 
How we turned Office 365 from a threat to an opportunity- Dan Scott
How we turned Office 365 from a threat to an opportunity- Dan ScottHow we turned Office 365 from a threat to an opportunity- Dan Scott
How we turned Office 365 from a threat to an opportunity- Dan Scott
 
Delivering Security with GFI MAX - Mark Petrie
Delivering Security with GFI MAX - Mark Petrie  Delivering Security with GFI MAX - Mark Petrie
Delivering Security with GFI MAX - Mark Petrie
 
7 reasons your backups should go to the cloud - Nick Cavalancia
7 reasons your backups should go to the cloud - Nick Cavalancia 7 reasons your backups should go to the cloud - Nick Cavalancia
7 reasons your backups should go to the cloud - Nick Cavalancia
 
The Mysterious Case of the Vanishing Cloud - Seth Robinson
The Mysterious Case of the Vanishing Cloud - Seth Robinson The Mysterious Case of the Vanishing Cloud - Seth Robinson
The Mysterious Case of the Vanishing Cloud - Seth Robinson
 
Christiano Fermo
Christiano Fermo Christiano Fermo
Christiano Fermo
 

Último

%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...masabamasaba
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile EnvironmentVictorSzoltysek
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2
 

Último (20)

%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 

Scripting and Automation within the MAX Platform - Mark Petrie

  • 1. Scripting and Automation GFI MAX RemoteManagement Mark Petrie, Director of Engineering GFI MAX
  • 2. Scripting and Automation » Introduction to scripting in GFI MAX RemoteManagement: » Just what EXACTLY do we mean by scripting? » Who is using scripting and for what purpose? » Using built-in scripts » Pro-active Monitoring Checks » Automated Maintenance Tasks » Using community scripts from fixitscripts.com » Find solutions to problems you have » Writing your own scripts… » Return codes » Considerations » Getting started » Coding guidelines » Using the API » Examples
  • 4. Just what EXACTLY do we mean by scripting? » Upload, deploy, schedule and run scripts for additional: » Monitoring Checks (Windows, OSX and Linux) » Maintenance Tasks (Windows only) » Scripts can be written in variety of common languages: » DOS Batch and CMD » VBS and Powershell » Ruby, Python, Perl and PHP » Javascript » AppleScript » BASH » Upload script once, downloaded as required (without Agent update) » Very powerful, but also secure: » Script source can only be uploaded by superuser » Signed (public/private key encryption) when downloaded by Agents
  • 5. Are people using it? » 7.5 million script checks run every day! » Over 140,000 monitoring script checks » 260,000 maintenance tasks run every day! » What is it being used for? » Monitoring bespoke applications and hardware » Automating onboarding new clients • Automating software installation • Enforcing standard configurations » Regular scheduled maintenance » Automated fault resolution
  • 7. Pro-active Monitoring Checks » Deploy as either 24x7 or DSC script check » Get alerts and view results in Dashboard and Client Reports » Timeout limited to 150 seconds
  • 8. What Monitoring Checks are already available? » Application Control: » Running Process » System User Count » SQL Query » Exchange: » Large Mailboxes » Mail Queue Size » Store Control » Security Center: » Antivirus Status » Windows Firewall » Windows Update
  • 9. What Monitoring Checks are already available? » Virtualisation: » VMware ESXi – Datastore Free Space » VMware ESXi Health – CPUs » VMware ESXi Health – Fans » VMware ESXi Health – Memory » VMware ESXi Health – PSUs » VMware ESXi Health – Sensors » VMware ESXi Health – Storage » VMware ESXi – Virtual Machine Inventory » VMware ESXi – Virtual Machine Power State
  • 10. Monitoring Datastore Free Space and Storage Health
  • 13. Automated Maintenance Tasks » Upload script to Dashboard » Deploy site wide or to individual workstations and servers » Schedule once per day, week or month » Run in response to a failed check » View results in Dashboard » Automated Tasks Report » Timeout per schedule
  • 14. What Maintenance Tasks are already available? » Antivirus: » Malwarebytes » Sophos Definition Update » Application Control: » Running Process » SQL Query » Exchange: » Store Control » Clean-Up: » Clean Temp Files » Clear Event Log » Defrag » Windows » Schedule Reboot » Service Control » Virtualisation » VMware ESXi – Virtual Machine Control
  • 15. Stopping, starting and restarting VMs
  • 17. fixitscripts.com 433 problems / requests for scripts 584 total scripts 269 scripts tagged for MAX RM 328 PowerShell scripts Visitors from over 100 countries 179 VBScript scripts 18,420 visitors in last 3 months 797 registered users Over 2 minutes duration per visit
  • 18. Using script from fixitscripts.com
  • 19. Writing your own scripts
  • 20. Return codes » Extend GFI MAX to monitor anything!? » Use exit codes to cause check to fail: » Exit 0 to cause check to pass » Exit non-zero to cause check to fail » Exit >1000 to display text output in Dashboard » Batch echo “Error Message” exit 1001 » VBS wscript.echo( “Error Message” ) wscript.Quit(1001) » PowerShell Write-Host “Error Message” Exit 1001
  • 22. Local system account » User context (Session Zero) » No user interaction » No network Resources
  • 23. Environment Variables » Command line arguments solve this…
  • 27. Don’t reinvent the wheel! » Steal Learn from Others Scripts » fixitscripts.com » GFI Forum » LinkedIn » Google! » Identify the problem trying to solve » Look at ServiceDesk – where is time being spent on tickets » Check Google (Why reinvent the wheel?) » Investigate using tools (ProcessMonitor, ProcessExplorer, etc) » Find Applications/Commands » Command Switches » Use previous scripts as a template and import into GFI MAX
  • 28. Example from LinkedIn (service recovery)
  • 29. Example from LinkedIn (service recovery)
  • 31. Visual Basic and Powershell » Visual Basic Script fully supported since Windows 2000 » Powershell supported from WindowsXP onwards » May need to be installed on some older systems » Using Windows Script Host WScript object, you can access: » Arguments passed to script » Command Line Shell » File System » Registry » Services » Network (not if running as Local System Account) » VBS can also access Windows Management Instrumentation
  • 32. Script structure » Clearly identify problem trying solve » Any script needs to do the following: » Declare variables to be used » Parse command line arguments » Interact with Windows or Application » Handle any errors » Return results
  • 33. Declaring variables and constants » Good practice to force all variables to be declared before use » Use g_ to indicate global variables and clarify variable scope » Use type hinting to indicate variables intended purpose » Use Constants for magic numbers that won’t change ' Usage: { start | stop | restart } "Service Name“ Option Explicit Dim g_oArgs, g_nMode, g_sServiceName Const MODE_START = 101 Const MODE_STOP = 102 Const MODE_RESTART = 103
  • 34. Command Line Arguments » Arguments passed into script via command line can be used to: » Control behaviour of script (for example: action to perform) » Pass in the target of script (for example: service to restart) » Setup additional environment variables (If not available to Local System) » Advantages over hard-coding script behaviour and target? » Common code (e.g. connect to service manager) can be reused » Reduces number of scripts and improves maintainability of library
  • 35. Command Line Arguments » Accessing arguments: » DOS Batch uses %1, %2 etc (note %0 is name of script) » Linux shell scripts (BASH) use $1, $2 etc ($0 is name of script) » Dynamic langauges (Perl, PHP) use $argc (count) and @argv (array) » VBS uses WScript.Arguments object: • WScript.Arguments.Count method gives number of arguments • WScript.Arguments(0) is first argument etc » Scripts ran by Advanced Monitoring Agent: » Two arguments are always appended to command line (for debug) » -logfile logname can be ignored
  • 36. Command Line Arguments ' Usage: { start | stop | restart } "Service Name“ Set g_oArgs = WScript.Arguments If g_oArgs.Count < 2 Then WScript.Echo "Invalid Arguments" WScript.Quit(1) End If Select Case g_oArgs(0) Case "start" g_nMode = MODE_START Case "stop" g_nMode = MODE_STOP Case "restart" g_nMode = MODE_RESTART Case Else WScript.Echo "Invalid Args" WScript.Quit(1) End Select g_sServiceName = g_oArgs(1)
  • 37. Interacting with applications » Windows Script Host can run applications on local system » Application has status 0 until it terminates Set g_oShell = WScript.CreateObject("WScript.Shell") Set g_oRunningApp = g_oShell.Exec( "c:/path/to/my.exe arg0 arg1" ) Do While g_oRunningApp.Status = 0 WScript.Sleep 100 Loop WScript.Echo "Application Terminated“ » Application will be ran as user Agent running under (Local System Acc) » Any pop-up or user intervention will likely cause script timeout
  • 38. Interacting with file system • Create a File System Object to access any file or directory listing Set g_oFileSystem = CreateObject( "Scripting.FileSystemObject" ) Set g_oTextFile = g_oFileSystem.OpenTextFile( "c:test.txt", 1 ) Do Until g_oTextFile.AtEndOfStream g_sNextLine = g_oTextFile.Readline WScript.Echo g_sNextLine Loop • Use regular expressions to parse file contents Set oRegExp = New RegExp oRegExp.Pattern = "^GETd.pdf$" Do Until oTextFile.AtEndOfStream sCurrentLine = oTextFile.Readline If oRegExp.Test( sCurrentLine ) Then nAccessed = nAccessed + 1 End If Loop • Regular expressions can also be used to extract or replace matches
  • 39. Interacting with registry » Registry stores config and management information of OS and Apps » Hierarchical organisation of keys and values (like filesystem) » A key can store many other keys. » A key can have default data. » A value can only store data and cannot store other values or keys » Data types of values must be explicitly set on creation » REG_BINARY – Binary Data (0’s and 1’s) » REG_DWORD – Double Word (Numeric, up to 32bit values) » REG_QWORD – Quadruple Word (Numeric, up to 64bit values) » REG_MULTI_SZ – A Set of Strings » Retrieve a value from Registry using RegRead (e.g. path to application) Set g_oShell = WScript.CreateObject ("WScript.Shell") g_sMBAMLocation = g_oShell.RegRead _ ("HKLMSOFTWAREMicrosoftWindowsCurrentVersionApp Pathsmbam.exe") » Write a value to registry using RegWrite (e.g. reconfigure an application) g_oShell.RegWrite ( “key_location”, “value”, “key_type” )
  • 40. Handling errors » On Error GoTo 0 (default) » Will cause script to exit, use only for fatal non-recoverable errors » On Error Resume Next » Will cause script execution to continue, allowing you to handle error » Err variable set to last error code » Script follows rule until presented with another error handing instruction » The scope of rule is per sub-routine only » Use function to handle errors consistently Function stHandleFatalError( innExitCode, insMsg ) If Err.Number <> 0 Then Err.Clear On Error GoTo 0 WScript.Echo insMsg Wscript.Quit innExitCode End If On Error Resume Next Err.Clear End Function
  • 41. Return results to Dashboard » Use exit codes to cause check to fail: » Exit 0 to cause check to pass » Exit non-zero to cause check to fail » Exit >1000 to display text output in Dashboard » Batch echo “Error Message” exit 1001 » VBS wscript.echo( “Error Message” ) wscript.Quit(1001) » PowerShell Write-Host “Error Message” Exit 1001
  • 42. Putting it all together Option Explicit Dim g_oWindowsFirewall On Error Resume Next Set g_oWindowsFirewall = WScript.CreateObject( "HNetCfg.FwMgr" ) stHandleFatalError 2001, "Unable to create Firewall object" If g_oWindowsFirewall.LocalPolicy.CurrentProfile.FirewallEnabled = 1 Then WScript.Echo "Windows Firewall Enabled" WScript.Quit ( 0 ) Else WScript.Echo "Windows Firewall Disabled" WScript.Quit ( 2000 ) End If Function stHandleFatalError( innExitCode, insMsg ) If Err.Number <> 0 Then Err.Clear On Error GoTo 0 WScript.Echo insMsg Wscript.Quit innExitCode End If On Error Resume Next Err.Clear End Function
  • 43. Windows Management Instrumentation » WMI allows access to almost all Windows components » Make modifications to settings and initiate operations » For example, check Print Spooler is running… sServiceName = "Spooler" sComputer = "." On Error Resume Next Set oWMIService = GetObject("winmgmts:" & strComputer & "rootCIMV2") stHandleFatalError( ERROR_CREATEOBJECT_WMI ) Set oService = oWMIService.Get("Win32_Service.Name='" & sServiceName & "'") If oService.State = "Running" Then WScript.Echo "Print Spooler is Running" WScript.Quit ( 0 ) Else ' Restart Service etc...
  • 44. Windows Management Instrumentation http://msdn.microsoft.com/en-us/library/aa394554(v=vs.85).aspx
  • 46. Getting the data you need from API » Used mainly to get data out of GFI MAX RemoteManagement » Easy to manipulate with PowerShell: $apikey = “YOUR API KEY" $clientsurl = "https://www.systemmonitor.us/api/?apikey=$apikey&service=list_clients" [xml]$xmlclients = (new-object System.Net.WebClient).DownloadString($clientsurl) » Example Uses: » Getting serial number data » Getting MAC addresses for Wake-on-LAN » See online help system for full instructions
  • 47. Example: Workstations that have not been scanned in 90 days $apikey = "YOUR API KEY" $CurrDate = Get-Date $clientsurl = "https://www.systemmonitor.us/api/?apikey=$apikey&service=list_clients" $wstable = @() [xml]$xmlclients = (new-object System.Net.WebClient).DownloadString($clientsurl) foreach ($xmlclientslist in $xmlclients.result.items.client) { $clientid = $xmlclientslist.clientid $sitesurl="https://www.systemmonitor.us/api/? apikey=$apikey&service=list_sites&clientid=$clientid" [xml]$xmlsites = (new-object System.Net.WebClient).DownloadString($sitesurl) foreach ($xmlsiteslist in $xmlsites.result.items.site) { $siteid = $xmlsiteslist.siteid $wsurl = "https://www.hound-dog.us/api/? apikey=$apikey&service=list_workstations&siteid=$siteid" [xml]$xmlws = (new-object System.Net.WebClient).DownloadString($wsurl) foreach ($xmlwslist in $xmlws.result.items.workstation) { [datetime]$wsdate = $xmlwslist.last_scan_time if (($CurrDate).Subtract($wsdate).Days -gt 90) { $wsObj = "" | select Client,WSName,Age $wsObj.Client = $xmlclientslist.name."#cdata-section" $wsObj.WSName = $xmlwslist.name."#cdata-section" $wsObj.Age = ($CurrDate).Subtract($wsdate).Days $wstable += $wsObj }}}}
  • 48. Example: Wake devices before patching param($siteid) $apikey = "Put your API Key here“ $apiurl = “https://www.systemmonitor.us/api/?apikey=$apikey” $url = "$($apiurl)&service=list_workstations&siteid=$siteid" [xml]$xmlmac = (new-object System.Net.WebClient).DownloadString($url) foreach ($xmlmacws in $xmlmac.result.items.workstation) { $macString = $xmlmacws.mac1."#cdata-section" $mac = $macString.split(':') | %{ [byte]('0x' + $_) } $UDPclient = new-Object System.Net.Sockets.UdpClient $UDPclient.Connect(([System.Net.IPAddress]::Broadcast),4000) $packet = [byte[]](,0xFF * 6) $packet += $mac * 16 [void] $UDPclient.Send($packet, $packet.Length) write-output "Wake-On-Lan magic packet of length $($packet.Length) sent to $macString" }
  • 50. Real-world examples » Custom Monitoring » Automate repetitive tasks » Onboarding new clients » Software installation » Preventing tickets
  • 51. Custom Monitoring » Check current time vs. NTP server $ntpcheck = w32tm /stripchart /dataonly /computer:pool.ntp.org /samples:1 [int]$ntpchecktime = $($ntpcheck.Split()[-1]).Split("s")[0].Substring("1") Write-Output "$ntpchecktime seconds" if ($ntpchecktime -gt 300) { Write-Output "Check failed" Exit 1001 }
  • 52. Onboarding new clients » Make sure all of your standards are enforced from the start » Install and configure SNMP » Software deployment » Enable RDP » Enable Wake on LAN » Open ports in the firewall
  • 53. Install and configure SNMP cmd /c Servermanagercmd -install SNMP-Services reg add HKEY_LOCAL_MACHINESYSTEMCurrentControlSet servicesSNMPParametersValidCommunities /v ROString /t REG_DWORD /d 4 /f reg delete HKEY_LOCAL_MACHINESYSTEMCurrentControlSet ServicesSNMPParametersPermittedManagers /f Stop-Service -Name SNMP Start-Service -Name SNMP
  • 54. Software deployment » Download MSI or EXE and use silent switches to install software » Host on your website, Dropbox, or similar file storage solution » Silent switches are typically available with software documentation » MSI install files always use msiexec with the same switches for installation Msiexec /I {filepath} /quiet /qn /norestart REBOOT=reallysuppress » Check HKLMSoftwareMicrosoftWindowsUninstall for MSI uninstall string. Add /quiet to switch to make quiet Msiexec /I {filepath} /quiet /qn /norestart REBOOT=reallysuppress
  • 55. Download and install OpenManage $file_url = "http://downloads-us.dell.com/FOLDER00574377M/1/OM-SrvAdmin-Dell- Web-WIN-7.1.0-5304_A00.exe" $file_name = "OMSA-6.5.0-2247_A01.exe" $numafiles_path = "$Env:SystemDriveNumaNetworks" if ((Test-Path $numafiles_path) -eq $false) { New-Item -type directory -Path $numafiles_path | Out-Null } if ((Test-Path "$numafiles_path$($file_name)") -eq $false) { $file_dload_file = "$numafiles_path$($file_name)" $file_dload = new-object System.Net.WebClient $file_dload.DownloadFile($file_url,$file_dload_file) cmd /c $numafiles_path$file_name /auto $numafiles_pathOpenManage } cmd /c msiexec /i $numafiles_pathOpenManageWindowsSystemsManagementSysMgmt.msi /quiet /norestart
  • 56. Preventing tickets » Fix problems detected by your monitoring scripts » Reduce the amount of tickets coming into your helpdesk » Setup using an automated task » Don’t run at a specified time, run at a specified event » Able to run at the failure of most checks (Service, Event, AV Update) » Script will run at next 24/7 check-in following failure » Examples: » Clear and start print spooler when service stops » Force AV definition update when definitions are old » Run disk cleanups when disk gets full
  • 57. Clear Print Spooler and restart service Set objShell = CreateObject("WScript.Shell") Set objFSO = CreateObject("Scripting.FileSystemObject") Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!"_ & “.rootcimv2") SpoolDirectory = objShell.RegRead("HKLMSystemCurrentControlSet"_ & "ControlPrintPrintersDefaultSpoolDirectory") Set objFolder = objFSO.GetFolder(SpoolDirectory) For Each objFile In objFolder.Files WScript.Echo "Deleteing "+objFile.Name objFile.Delete(Force) Next Set objSpooler = objWMIService.Get("Win32_Service='spooler'") If objSpooler.State = "Stopped" Then WScript.Echo "Starting Spooler." objSpooler.StartService() End If
  • 59. Summary » Scripting allows you to extend monitoring and automate maintenance » 7.5 million script checks and 260,000 maintenance tasks run every day » Built-in scripts available to add now with no programming knowledge required » Hundreds of community scripts available on fixitscripts.com for you to use » If you do want to write your own scripts » Ensure script returns appropriate return code for pass/fail » See script writing guidelines in help system » Borrow and build on top of other scripts » Save time onboarding new clients, automating maintenance and preventing tickets » Check your ServiceDesk for where time is being spent on tickets