first commit
This commit is contained in:
commit
8248d694aa
87
activitystats.ps1
Normal file
87
activitystats.ps1
Normal file
@ -0,0 +1,87 @@
|
||||
#Zebra - 5/21/2023
|
||||
#Activity Status tracker script. Queries activity status of the currently logged in user.
|
||||
#Works for both Console and Terminal Services sessions
|
||||
|
||||
Add-Type @"
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
public static class UserInput {
|
||||
[DllImport("user32.dll")]
|
||||
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
struct LASTINPUTINFO {
|
||||
public uint cbSize;
|
||||
public uint dwTime;
|
||||
}
|
||||
|
||||
public static TimeSpan GetIdleTime() {
|
||||
LASTINPUTINFO lastInput = new LASTINPUTINFO();
|
||||
lastInput.cbSize = (uint)Marshal.SizeOf(lastInput);
|
||||
if (!GetLastInputInfo(ref lastInput)) {
|
||||
throw new Exception("Unable to get last input time.");
|
||||
}
|
||||
return TimeSpan.FromMilliseconds(Environment.TickCount - lastInput.dwTime);
|
||||
}
|
||||
}
|
||||
"@
|
||||
|
||||
$windowsEdition = (Get-CimInstance Win32_OperatingSystem).Caption
|
||||
|
||||
|
||||
if ($windowsEdition -match "Pro" -or $windowsEdition -match "Enterprise" -or $windowsEdition -match "Server") {
|
||||
Write-Host "Windows Pro or Enterprise Edition detected."
|
||||
|
||||
$session = @(qwinsta /server:localhost 2> $null | Select-String "Active")
|
||||
|
||||
if ($session) {
|
||||
#$idleTime = [UserInput]::GetIdleTime()
|
||||
#$session = $session | Where-Object { $_ -notmatch 'console' }
|
||||
$localSession = $session | Where-Object { $_ -match 'console' }
|
||||
$rdpSession = $session | Where-Object { $_ -match 'rdp' }
|
||||
if ($localSession) {
|
||||
$username = ($localSession -split "\s+")[2]
|
||||
#$sessionId = ($localSession -split "\s+")[3]
|
||||
$idleTime = [UserInput]::GetIdleTime()
|
||||
if ($idleTime.TotalMinutes -gt 15) {
|
||||
$lastActive = (Get-Date).add(-$idleTime)
|
||||
Write-Host "($username) is logged in via Console and inactive since $lastActive."
|
||||
} else {
|
||||
Write-Host "($username) is currently logged in via Console and active."
|
||||
}
|
||||
} elseif ($rdpSession) {
|
||||
$username = ($rdpSession -split "\s+")[2]
|
||||
# $sessionId = ($rdpSession -split "\s+")[3]
|
||||
$idleTime = [UserInput]::GetIdleTime()
|
||||
if ($idleTime.TotalMinutes -gt 15) {
|
||||
$lastActive = (Get-Date).add(-$idleTime)
|
||||
Write-Host "($username) is logged in via RDP and inactive since $lastActive."
|
||||
} else {
|
||||
Write-Host "($username) is currently logged in via RDP and active."
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
Write-Host "No user is currently logged on."
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
Write-Host "Windows Pro or Enterprise not detected."
|
||||
|
||||
$username = (Get-WmiObject -Class Win32_ComputerSystem).UserName
|
||||
|
||||
if ($username) {
|
||||
$idleTime = [UserInput]::GetIdleTime()
|
||||
if ($idleTime.TotalMinutes -gt 15) {
|
||||
$lastActive = (Get-Date).add(-$idleTime)
|
||||
Write-Host "($username) is logged in and inactive since $lastActive"
|
||||
} else {
|
||||
Write-Host "($username) is currently logged on and active."
|
||||
}
|
||||
} else {
|
||||
Write-Host "No user is currently logged on."
|
||||
}
|
||||
}
|
31
battery-status.ps1
Normal file
31
battery-status.ps1
Normal file
@ -0,0 +1,31 @@
|
||||
#zebra- 6/2/2023
|
||||
#Script to get current battery percentage & status
|
||||
|
||||
$computerSystem = Get-WmiObject -Class Win32_ComputerSystem
|
||||
$computerModel = $computerSystem.Model
|
||||
$systemType = $computerSystem.PCSystemType
|
||||
#check if machine is a Laptop
|
||||
$isLaptop = ($systemType -eq 2)
|
||||
|
||||
if ($isLaptop) {
|
||||
#Get Battery current stats
|
||||
$battery = Get-WmiObject -Class Win32_Battery
|
||||
$batteryPercentage = $battery.EstimatedChargeRemaining
|
||||
$batteryStatus = $battery.BatteryStatus
|
||||
$finalStatus = "Battery status: Unknown"
|
||||
|
||||
switch ($batteryStatus) {
|
||||
1 { $finalStatus = "Discharging" }
|
||||
2 { $finalStatus = "Charging" }
|
||||
3 { $finalStatus = "Fully charged" }
|
||||
4 { $finalStatus = "Low"}
|
||||
5 { $finalStatus = "Critical"}
|
||||
6 { $finalStatus = "Charging and high" }
|
||||
7 { $finalStatus = "Charging and low" }
|
||||
8 { $finalStatus = "Charging and critical"}
|
||||
9 { $finalStatus = "Undefined"}
|
||||
10 { $finalStatus = "Partially charged" }
|
||||
default { $finalStatus = "Battery status: Unknown" }
|
||||
}
|
||||
Write-Host "$batteryPercentage% - $finalStatus"
|
||||
}
|
2
disable-touchscreen.ps1
Normal file
2
disable-touchscreen.ps1
Normal file
@ -0,0 +1,2 @@
|
||||
#Zebra - Disables all touch screens
|
||||
Get-PnpDevice | Where-Object {$_. FriendlyName -like '*touch screen*'} | Disable-PnpDevice -Confirm:$false
|
26
lastreboot.ps1
Normal file
26
lastreboot.ps1
Normal file
@ -0,0 +1,26 @@
|
||||
#* = Required
|
||||
#* -days <int> (Max days)
|
||||
#
|
||||
#-returncode (Prints return code 0 if the last bootup time is less than 4 days than the current date, and 1 if it's over 4 days.)
|
||||
|
||||
|
||||
[CmdletBinding()]
|
||||
param (
|
||||
[switch]$returncode,
|
||||
[int]$days = 4
|
||||
)
|
||||
|
||||
$os = Get-WmiObject Win32_OperatingSystem
|
||||
$lastBootupTime = $os.ConvertToDateTime($os.LastBootUpTime)
|
||||
$daysSinceLastBootup = (Get-Date) - $lastBootupTime | select -ExpandProperty Days
|
||||
|
||||
$lastBootupTimeFormatted = $lastBootupTime.ToString("MM/dd/yy hh:mm:ss")
|
||||
|
||||
if ($daysSinceLastBootup -lt $days) {
|
||||
Write-Host "$lastBootupTimeFormatted"
|
||||
if ($returncode) { exit 0 }
|
||||
}
|
||||
else {
|
||||
Write-Host "$lastBootupTimeFormatted"
|
||||
if ($returncode) { exit 1 }
|
||||
}
|
29
officeversion.ps1
Normal file
29
officeversion.ps1
Normal file
@ -0,0 +1,29 @@
|
||||
#zebra
|
||||
#Gets current Microsoft Office Version
|
||||
|
||||
$ReportedVersion = Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration" -Name "VersionToReport"
|
||||
$Channel = Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration" -Name "CDNBaseUrl" | Select-Object -Last 1
|
||||
$CloudVersionInfo = Invoke-RestMethod 'https://clients.config.office.net/releases/v1.0/OfficeReleases'
|
||||
$UsedChannel = $cloudVersioninfo | Where-Object { $_.OfficeVersions.cdnBaseURL -eq $channel }
|
||||
|
||||
if ($UsedChannel.latestversion -eq $ReportedVersion) {
|
||||
Write-Host "Up to date. $($ReportedVersion) - Channel: $($UsedChannel.Channel) "
|
||||
exit 0
|
||||
}
|
||||
else {
|
||||
Write-Host "Not up to date, $($UsedChannel.Channel) Channel. Check if version is still supported"
|
||||
$OurVersion = $CloudVersionInfo.OfficeVersions | Where-Object -Property legacyVersion -EQ $ReportedVersion
|
||||
if ($OurVersion.endOfSupportDate -eq "0001-01-01T00:00:00Z") {
|
||||
Write-Host "Not up to date: $($ReportedVersion) - Latest: $($UsedChannel.latestVersion)"
|
||||
exit 0
|
||||
}
|
||||
if ($OurVersion.endOfSupportDate) {
|
||||
Write-Host "Out of date: $($ReportedVersion) - End of Support: $($OurVersion.endOfSupportDate) - Latest: $($UsedChannel.latestVersion)"
|
||||
exit 1
|
||||
}
|
||||
else {
|
||||
Write-Host "Unsupported: $($ReportedVersion) - Latest: $($UsedChannel.latestVersion)."
|
||||
#$CloudVersionInfo.OfficeVersions
|
||||
exit 1
|
||||
}
|
||||
}
|
10
readme.md
Normal file
10
readme.md
Normal file
@ -0,0 +1,10 @@
|
||||
Conglomeration of PowerShell scripts to be used in tandem with an RMM<br />
|
||||
|
||||
<ul>
|
||||
<li>activitystats.ps1 - Returns Activity Status of User in console (Run as User)</li>
|
||||
<li>battery-status.ps1 - Returns Battery Status of Laptops in console</li>
|
||||
<li>disable-touchscreen.ps1 - Disables Touch screen devices</li>
|
||||
<li>lastreboot.ps1 - Returns last reboot date/time in console</li>
|
||||
<li>officeversion.ps1 - Returns MS Office version in console</li>
|
||||
<li>spacesniffer-deploy.ps1 - Downloads SpaceSniffer and generates a SpaceSniffer snapshot file of desired drive.</li>
|
||||
</ul>
|
24
spacesniffer-deploy.ps1
Normal file
24
spacesniffer-deploy.ps1
Normal file
@ -0,0 +1,24 @@
|
||||
#zebra 5/23/23
|
||||
#Deploys and runs SpaceSniffer. Defaults to C: Drive
|
||||
#args: -drive <char>
|
||||
|
||||
[CmdletBinding()]
|
||||
param (
|
||||
[string]$drive = "C"
|
||||
)
|
||||
$folderPath = "C:\Ktemp\tools"
|
||||
$downloadUrl = "https://git.izebra.xyz/Mirrored_Repos/SpaceSniffer/raw/branch/main/SpaceSniffer.exe"
|
||||
$filePath = "C:\Ktemp\tools\SpaceSniffer.exe"
|
||||
|
||||
if(!(Test-Path -Path $folderPath -PathType Container))
|
||||
{
|
||||
New-Item -ItemType Directory -Path $folderPath | Out-Null
|
||||
}
|
||||
# Check if the file already exists
|
||||
if (-not (Test-Path $filePath)) {
|
||||
# Download the file using Invoke-WebRequest
|
||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||
Invoke-WebRequest -Uri $downloadUrl -OutFile $filePath
|
||||
}
|
||||
|
||||
C:\Ktemp\tools\SpaceSniffer.exe /S scan $drive export "SpaceSniffer binary snapshot" "C:\Ktemp\tools\SpaceSniffer-$(get-date -f yyyy-MM-dd-hh-mm-ss).sns" autoclose
|
Loading…
Reference in New Issue
Block a user