Workspace-Guru

VirtualMetricExamples.ps1

Apr 5th, 2021
4,315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. $apiuser = "APIUSER"
  3. $key = "APIKEY"
  4. $server = "http://SERVERFQDN:8080"
  5.  
  6. $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
  7. $headers.Add("Content-Type", "application/x-www-form-urlencoded")
  8.  
  9. $body = "username=$apiuser&password=$key&grant_type=password"
  10.  
  11. $response = Invoke-RestMethod $server/token -Method 'POST' -Headers $headers -Body $body
  12. $token = $response.access_token | Out-String
  13.  
  14. $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
  15. $headers.Add("Authorization", "Bearer $token")
  16.  
  17. #Defender Check and Fix
  18. $defenderstatus = Invoke-RestMethod -Headers $headers -uri "$server/API/Query/Read?columns=[title=%3Cl%3Ehostname%3C/l%3E]inventory:host:name,inventory:hostwindowsdefender:amengineversion,inventory:hostwindowsdefender:amproductversion,inventory:hostwindowsdefender:amserviceversion,inventory:hostwindowsdefender:antispywareenabled,inventory:hostwindowsdefender:antivirusenabled,inventory:hostwindowsdefender:realtimeprotectionenabled,inventory:host:pendingreboot&groupBy=object&output=datatable&link=yes&singleRecord=yes&title=Windows%20Defender&icon=fa%20fa-exclamation-circle&export=json&liveMode=1&tablemode=1&liveupdate=1"
  19. $defenderoff = $defenderstatus  | where-object {$_.hostwindowsdefenderrealtimeprotectionenabled -eq "False"}
  20. if($defenderoff){
  21.     foreach($machine in $defenderoff){
  22.         $MachineName = $Machine.hostname
  23.         write-host "The Windows Defender is turned off on $MachineName"
  24.         write-host "Turning on Windows Defender on host $MachineName"
  25.         Invoke-Command -ComputerName $MachineName -ScriptBlock {Set-MpPreference -DisableRealtimeMonitoring $false}
  26.     }    
  27. }
  28.  
  29. #Disk Check and Cleanup
  30. $diskTreshHold = "75%"
  31. $disks = Invoke-RestMethod -Headers $Headers -uri "$server/API/Query/Read?columns=inventory:hostdisk:volumename,inventory:hostdisk:label,[title=%3Cl%3Ehostname%3C/l%3E]inventory:host:name,counter:hoststorage:436,counter:hoststorage:175,counter:hoststorage:173,counter:hoststorage:176&groupBy=object&output=datatable&link=yes&singleRecord=yes&title=Storage%20Capacity&icon=fa%20fa-hdd&export=json&liveMode=1&tablemode=0&liveupdate=1"
  32. $fulldisks = $disks | where-object {$_.hoststorage436 -gt $diskTreshHold}
  33.  
  34. if($fulldisks){
  35.     foreach($machine in $fulldisks){
  36.         $MachineName = $Machine.hostname
  37.         write-host "Disk is full on $MachineName"
  38.         write-host "Cleaning disk on $MachineName"
  39.         Invoke-Command -ComputerName $MachineName -ScriptBlock {Get-ChildItem -Path "C:\Temp" | remove-item -Recurse -Force -Confirm:$false}
  40.     }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment