Laboratory

Reading Time: 16 minutes
🖥️ Microsoft Miscellaneous Commands & Scripts
This section is a practical Windows administration reference that groups together everyday troubleshooting, maintenance, and system-management commands in one place. It covers a mix of useful command-line tools and scripts for checking system health, repairing corrupted files, managing services and updates, gathering system information, and fixing common Windows issues without needing to dig through multiple Microsoft docs. Overall, it works as a quick-access toolbox for IT admins, power users, and support technicians who need reliable commands for diagnostics, cleanup, recovery, and general operating system maintenance.
| Microsoft Miscellaneous Commands & Scripts | |
|---|---|
Clear all Event Viewer LogsRun Run this batch command to enumerate all Event Viewer logs and clear them. for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1" | |
Clear all Logs in Windows DirectoryRun Change into the Windows directory, then delete .log files recursively, quietly, and forcefully. cd C:\Windows del *.log /a /s /q /f | |
Reinstall the Microsoft XPS Document WriterRun Disable and then re-enable the XPS Services feature. Dism /Online /Disable-Feature /FeatureName:"Printing-XPSServices-Features" /NoRestart Dism /Online /Enable-Feature /FeatureName:"Printing-XPSServices-Features" /NoRestart Reference | |
Reinstall the Microsoft Print to PDF PrinterRun DISM version: Dism /Online /Disable-Feature /FeatureName:"Printing-PrintToPDFServices-Features" /NoRestart Dism /Online /Enable-Feature /FeatureName:"Printing-PrintToPDFServices-Features" /NoRestart PowerShell PowerShell version: Disable-WindowsOptionalFeature -Online -FeatureName Printing-PrintToPDFServices-Features -All Enable-WindowsOptionalFeature -Online -FeatureName Printing-PrintToPDFServices-Features -All Reference | |
Reinstall the Microsoft Fax PrinterRun Disable and then re-enable the Fax Services feature. Dism /Online /Disable-Feature /FeatureName:"FaxServiceRole" /NoRestart Dism /Online /Enable-Feature /FeatureName:"FaxServiceRole" /NoRestart Reference | |
Reinstall the Microsoft XPS ViewerRun Remove and then add the XPS Viewer capability. Dism /Online /Remove-Capability /CapabilityName:XPS.Viewer~~~~0.0.1.0 Dism /Online /Add-Capability /CapabilityName:XPS.Viewer~~~~0.0.1.0 Reference | |
Reset the Windows TCP/IP StackSteps Open Command Prompt as an administrator, then run the following commands in order and test the connection afterward. netsh winsock reset netsh int ip reset ipconfig /release ipconfig /renew ipconfig /flushdns arp -d Reference | |
Backup BitLocker Recovery Information to AD after BitLocker is Turned on for Windows 7Run Replace {id} with the protector GUID you want to back up. manage-bde -protectors -adbackup c: -id {id}Reference | |
Windows 10 In-Place Upgrade via Command LineExamples Two example upgrade commands: setup.exe /auto upgrade /priority normal /copylogs "C:\TEMP\Windows-10_22H2_Upgrade" setup.exe /auto upgrade /dynamicupdate enable /priority normal /eula accept /copylogs "C:\Windows 10 21H2 Upgrade Logs" Reference | |
Manually and Automatically Removing IIS Log FilesManual Delete IIS log files older than 30 days from a specific site log folder: ForFiles.exe -p C:\inetpub\logs\LogFiles\W3SVC1 -m *.log -d -30 -c "CMD.exe /C Del @path" This removes log files older than 30 days from the W3SVC1 folder. Add more folders as needed. Automatic Create a batch file at C:\inetpub\logs\LogFiles\W3SVC_LogsMaintenance.bat and place your cleanup commands inside it. ForFiles.exe -p C:\inetpub\logs\LogFiles\W3SVC1 -m *.log -d -30 -c "CMD.exe /C Del @path" ForFiles.exe -p C:\inetpub\logs\LogFiles\W3SVC2 -m *.log -d -30 -c "CMD.exe /C Del @path" Schedule Schedule the batch file weekly on Sundays at 06:00: SchTasks /Create /SC Weekly /D SUN /ST 06:00 /TN "W3SVC Logs Maintenance" /TR "C:\inetpub\logs\LogFiles\W3SVC_LogsMaintenance.bat" Reference | |
Force a Check Disk Scan in Windows on Next BootRun Mark the volume dirty so Check Disk runs on the next boot: fsutil dirty set c: Clear If Check Disk does not complete and the system keeps trying to scan on every boot, clear the scheduled check: chkntfs /x c: The /x switch tells Windows not to check volume C: on the next reboot. If the system is stuck in a loop, boot into Windows PE, Windows installation media, Windows-to-Go, or other boot media, run that command, then boot Windows normally. Repair After Windows loads, run a full disk check and repair: chkdsk /f /r c: This should complete the five stages of the scan and clear the dirty bit. Verify fsutil dirty query c: | |
Connecting to Office 365 with PowerShellRun PowerShell example from the source page: $LiveCred = Get-Credential -Username email -Message "Enter O365 admin credential here" $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection Import-PSSession $Session Reference | |
Download Latest Windows 10 ISO Directly from Microsoft (Home and Pro – RTM)Steps
These ISOs also work with Windows 10 OEM product keys embedded in BIOS. | |
Disable AutoDiscover so that Outlook Searches for Non-Microsoft Direct Exchange ServersBatch reg add HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\AutoDiscover /t REG_DWORD /v ExcludeExplicitO365Endpoint /d 1 PowerShell Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Office\16.0\Outlook\AutoDiscover' -Name 'ExcludeExplicitO365Endpoint' -Value 1 -Type DWORD -Force Reference | |
Force Office to Update to a Specific Version Through Command-LineRun cd "C:\Program Files\Common Files\microsoft shared\ClickToRun" officec2rclient.exe /update user updatetoversion=16.0.6366.2062 displaylevel=false forceappshutdown=true Note
| |
Repair Corruptions in a Windows InstallationSFC sfc /scannow findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >"%userprofile%\Desktop\SFC-Details.txt" The second command generates a text file on the desktop that highlights errors detected by SFC. DISM DISM.exe /Online /Cleanup-Image /RestoreHealth Alternate Source To repair an online image using your own source files instead of Windows Update: DISM.exe /Online /Cleanup-Image /RestoreHealth /Source:c:\test\mount\windows /LimitAccess Reference | |
Fix Problems that Block Programs from Being Installed or RemovedDownload Download the Microsoft troubleshooter here. | |
Microsoft Visual C++ Redistributable Latest Supported Downloads | All-in-OneOfficial Third-Party | |
Reset Local Group Policy to DefaultRun Delete the local policy folders, then force a Group Policy refresh. RD /S /Q "%WinDir%\System32\GroupPolicyUsers" RD /S /Q "%WinDir%\System32\GroupPolicy" gpupdate /force | |
Repair TLS Settings and Resolve Security ComplaintsDownload Download IIS Crypto from Nartac Software. The source notes IIS Crypto often resolves persistent website complaints about TLS security settings when manual changes still leave the site complaining. CLI Switches /backup - Specify a file to backup the current registry settings to. /template default - This template restores the server to the default settings. /best - This template sets your server to use the best practices for TLS. /pci32 - This template is used to make your server PCI 3.2 compliant. /strict - This template sets your server to use the strictest settings possible. /fips140 - This template makes your server FIPS 140-2 compliant. /reboot - Reboot the server after a template is applied. /help|? - Show the help screen. Example Example command that backs up the registry, applies a custom template, and reboots the server: iiscryptocli /backup backup.reg /template "C:\TEMP\MyServers.ictpl" /reboot | |
Latest Updates for Versions of Office that use Windows Installer (MSI)Reference | |
Managing Exchange MailboxesGet Permissions Get-Mailbox | % { Get-MailboxFolderPermission(($_.PrimarySmtpAddress.ToString())+":Calendar") -User %username% -ErrorAction SilentlyContinue } | Select Identity,User,AccessRights | Format-Table -Autosize -WrapAdd Permissions Add-MailboxFolderPermission -Identity %calendarname@fqdn%:Calendar -User %username@fqdn% -AccessRights Editor Remove Permissions Remove-MailboxFolderPermission -Identity "%fqdn/path/name:Calendar" -User %username% Folder Statistics Get-MailboxFolderStatistics "%username%" | ft Name, Identity, Folderpath, Foldertype | Format-Table -Autosize -Wrap | |
Restarting the Datto RMM Agent RemotelyPowerShell Invoke-Command -ComputerName %HOSTNAME% { Restart-Service -Name CagService }
(Get-Service -ComputerName %HOSTNAME% -Name CagService).Restart() | |
Switching Users with Command Line if GUI Option is MissingRun Open Command Prompt or PowerShell and enter: tsdiscon This takes you to the lock screen so you can sign in as another user. The source specifically calls this useful for off-site domain-joined computers that need a user-specific VPN session before another domain account can sign in. Reference | |
Use “Run as different user” Option in Right-Click Context Menu in ExplorerTip Hold Ctrl + Shift, then right-click the program to expose the Run as different user option in Explorer’s context menu. The source notes this is useful when Run as administrator is missing, disabled, unreliable, or when you need the install to run under a specific administrator user account instead of the local built-in Administrator context. | |
Not Seeing Mapped Network Drives for Certain User SessionsRegistry Path HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System Steps
Reference | |
Fix AppX Package Issues after AD Username ChangeContext The source describes this as a repair step for Store app failures after an Active Directory username change. It recommends temporarily adding the affected user to the local Administrators group on the client, signing in as that user, and then re-registering the AppX packages. PowerShell Get-AppxPackage | ForEach-Object { Add-AppxPackage -DisableDevelopmentMode -Register ($_.InstallLocation + 'AppxManifest.xml') }Alternate If the first variation does not work, try the path with a backslash: Get-AppxPackage | ForEach-Object { Add-AppxPackage -DisableDevelopmentMode -Register ($_.InstallLocation + '\AppxManifest.xml') } | |
Get Installed Features in Windows ServerPowerShell Get-WindowsFeature | Where-Object -FilterScript { $_.Installed -Eq $TRUE } | |
Uninstall Windows Features in Windows ServerExample Example shown for removing Sync Share for a File Server: Uninstall-WindowsFeature -Name FS-SyncShareService | |
Disable AutoLock for WorkFoldersPowerShell Set-SyncShare WorkFolders -PasswordAutolockExcludeDomain example.com Set-SyncShare WorkFolders -RequirePasswordAutoLock $False Get-SyncShare -Name "WorkFolders" | |
Lock WorkstationRun powershell.exe -command "rundll32.exe user32.dll,LockWorkStation" | |
Domain Network Type Not Detected in DomainRun powershell.exe -command "Restart-Service NlaSvc -Force" The source recommends creating a Task Scheduler task to run this command at boot on Windows Servers that are not detecting the correct network type. | |
Get to Classic System PropertiesRun Open the Run dialog and enter: shell:::{bb06c0e4-d293-4f75-8a90-cb05b6477eee} | |
Block Windows 11 UpgradePowerShell # Get Windows Edition
$Edition = (Get-ComputerInfo | Select-Object -ExpandProperty WindowsProductName).Trim()
$RegistryPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate"
# Check if Windows Edition is Windows 10.
if ($Edition -like "Windows 10*") {
Write-Host "Edition is Windows 10, applying Registry edits to block Windows 11 upgrade."
New-ItemProperty -Path $RegistryPath -Name "TargetReleaseVersion" -Value 1 -PropertyType DWORD -Force
New-ItemProperty -Path $RegistryPath -Name "ProductVersion" -Value 'Windows 10' -PropertyType String -Force
New-ItemProperty -Path $RegistryPath -Name "TargetReleaseVersionInfo" -Value '22H2' -PropertyType String -Force
} else {
Write-Host "An error occurred or edition does not match."
} | |
Disable – AutoDiscoverBatch REG ADD HKCU\SOFTWARE\Microsoft\Office\16.0\Outlook\AutoDiscover /V ExcludeExplicitO365Endpoint /T REG_DWORD /D 1 /F REG ADD HKCU\SOFTWARE\Microsoft\Office\16.0\Outlook\AutoDiscover /V PreferLocalXML /T REG_DWORD /D 0 /F REG ADD HKCU\SOFTWARE\Microsoft\Office\16.0\Outlook\AutoDiscover /V ExcludeHttpRedirect /T REG_DWORD /D 0 /F REG ADD HKCU\SOFTWARE\Microsoft\Office\16.0\Outlook\AutoDiscover /V ExcludeHttpsAutodiscoverDomain /T REG_DWORD /D 1 /F REG ADD HKCU\SOFTWARE\Microsoft\Office\16.0\Outlook\AutoDiscover /V ExcludeHttpsRootDomain /T REG_DWORD /D 1 /F REG ADD HKCU\SOFTWARE\Microsoft\Office\16.0\Outlook\AutoDiscover /V ExcludeScpLookup /T REG_DWORD /D 1 /F REG ADD HKCU\SOFTWARE\Microsoft\Office\16.0\Outlook\AutoDiscover /V ExcludeSrvRecord /T REG_DWORD /D 1 /F | |
Set OneDrive to Run at StartupPowerShell # Define source and destination paths
$sourceShortcut = "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk"
$destinationFolder = [System.Environment]::GetFolderPath("Startup")
$destinationShortcut = Join-Path -Path $destinationFolder -ChildPath "OneDrive.lnk"
# Copy the shortcut to the startup folder
Copy-Item -Path $sourceShortcut -Destination $destinationShortcut -Force
# Check if the copy was successful
if (Test-Path $destinationShortcut) {
Write-Host "OneDrive shortcut copied to Startup folder successfully."
} else {
Write-Host "Failed to copy OneDrive shortcut to Startup folder." -ForegroundColor Red
} | |
Scan and Repair – DISM, SFC, and Check DiskBatch echo 'y' | chkdsk.exe /f dism /online /cleanup-image /restorehealth sfc /scannow dism /online /cleanup-image /restorehealth sfc /scannow |
📦 Microsoft Deployment & Automation
Streamline your IT workflows with these powerful Microsoft deployment commands and scripts. From software installs to system configurations, this collection helps automate routine tasks and boost efficiency.
| Microsoft Deployment & Automation | |
|---|---|
Generic Windows Product KeysOfficial Use Microsoft’s official Generic Volume License Key reference page for the Windows client and server product keys discussed in the source section: KMS client activation and product keys. | |
Export all Third-Party Drivers of Current Running System to a FolderExamples Use either DISM or PowerShell to export third-party drivers from the currently running system to a folder. DISM /Online /Export-Driver /Destination:"C:\TEMP\ThinkPad-P50-Drivers" Export-WindowsDriver -Online -Destination "C:\TEMP\ThinkPad-P50-Drivers" Reference | |
Import and Install all Drivers to Current Running System from a FolderRun Add all INF drivers from the target folder and its subdirectories, install them, and reboot if needed. PnPUtil /Add-Driver "C:\TEMP\ThinkPad-P50-Drivers\*.inf" /Subdirs /Install /Reboot Reference | |
Register 32-bit and 64-bit .DLL and .OCX FilesCopy Copy 32-bit libraries into SysWOW64 and 64-bit libraries into System32 before registering them. copy "C:\32-bit-dlls" "C:\Windows\SysWOW64" copy "C:\64-bit-dlls" "C:\Windows\System32" Register C:\Windows\SysWOW64\regsvr32.exe example.dll C:\Windows\SysWOW64\regsvr32.exe example.ocx C:\Windows\System32\regsvr32.exe example.dll C:\Windows\System32\regsvr32.exe example.ocx Note On 64-bit Windows, the 64-bit version of regsvr32.exe is %systemroot%\System32\regsvr32.exe, and the 32-bit version is %systemroot%\SysWOW64\regsvr32.exe. Reference | |
Import Windows Security PolicyPowerShell Resolve the current script directory, then apply a security template to the local security database with secedit.exe. $ExecutingScriptDirectory = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent secedit.exe /configure /db %windir%\security\local.sdb /cfg "$ExecutingScriptDirectory\Windows-10-Modified.inf" /quiet | |
Export and Import Group Policies from Another SystemSteps
Run After extracting LGPO.exe, open Command Prompt in that folder and run the applicable import commands: LGPO /m "C:\TEMP\GPOs\GroupPolicy\Machine\Registry.pol" LGPO /u "C:\TEMP\GPOs\GroupPolicy\User\Registry.pol" LGPO /ua "C:\TEMP\GPOs\GroupPolicyUsers\S-1-5-32-544\User\Registry.pol" LGPO /un "C:\TEMP\GPOs\GroupPolicyUsers\S-1-5-32-545\User\Registry.pol" Note There may be nothing in C:\Windows\System32\GroupPolicyUsers if you do not have policies tied to specific users. Reference | |
Import and Enable AppLocker Policies and Enable APPIDSVC ServiceRun Import the XML AppLocker policy, then set the APPIDSVC service to start automatically. powershell -command "& {&'Import-Module' AppLocker}"; "& {&'Set-AppLockerPolicy' -XMLPOLICY C:\Deployment\AppLocker\example.xml}"
sc config APPIDSVC START=AUTOReference | |
Sysprep Command with Unattend.xml Created in WSIMRun Run Sysprep from the Sysprep folder and point it to the unattend file created in Windows System Image Manager (WSIM). cd C:\Windows\System32\Sysprep sysprep.exe /generalize /oobe /shutdown /unattend:Unattend.xml Reference | |
Install – Administrative Templates (Windows 11 22H2 v3.0) – Windows ServerPowerShell Install the Administrative Templates MSI, copy the template files into SYSVOL, then swap the central store folder if the new folder exists. msiexec.exe /i "C:\TEMP\Administrative_Templates_for_Windows_11_July_2023_Update_V3.msi" /quiet
copy-item -path "C:\Program Files (x86)\Microsoft Group Policy\Windows 11 July 2023 Update V3 (22H2)\PolicyDefinitions" -destination "C:\Windows\SYSVOL\domain\Policies\PolicyDefinitions_Win11-22H2-v3" -recurse -force
$folder = 'C:\Windows\SYSVOL\domain\Policies\PolicyDefinitions_Win11-22H2-v3'
"Test to see if folder [$folder] exists"
if (test-path -path $folder) {
rename-item -path "C:\Windows\SYSVOL\domain\Policies\PolicyDefinitions" -newname "PolicyDefinitions_old" -force
rename-item -path "C:\Windows\SYSVOL\domain\Policies\PolicyDefinitions_Win11-22H2-v3" -newname "PolicyDefinitions" -force
gpupdate /force
} else {
"An error has occured."
}Reference |
💿 Software Deployment & Management
Explore practical scripts and commands for deploying, updating, and managing software across systems. Designed to simplify your workflow and ensure smooth rollouts.
| Software Deployment & Management | |
|---|---|
Silently Install Intel Chipset DriversBAT SetupChipset.exe -overall -s -norestart | |
Silently Install Intel RST DriversBAT SetupRST.exe -s -overwrite | |
Silently Install Bitwarden Desktop ClientBAT Bitwarden-Installer-1.29.0.exe /ALLUSERS /S | |
Silently Install Egnyte Desktop ClientPowerShell # Define the URL of the file to download $url = "https://egnyte-cdn.egnyte.com/egnytedrive/win/en-us/latest/EgnyteConnectWin.msi?_ga=2.49362406.1151330795.1694033891-955991979.1692196399" # Make directory New-Item -Path 'C:\TEMP' -ItemType Directory -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue | Out-Null # Define the destination folder to extract to $destination = "C:\TEMP" # Download the file from the URL $downloadPath = Join-Path $destination "EgnyteConnectWin.msi" Invoke-WebRequest -Uri $url -OutFile $downloadPath Start-Process "EgnyteConnectWin.msi" -WorkingDirectory "C:\TEMP" -ArgumentList "/passive" -PassThru | |
Silently Install Dymo ConnectPowerShell $ExecutingScriptDirectory = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent Start-Process -Wait -FilePath "$ExecutingScriptDirectory\AccessDatabaseEngine-2010_x64.exe" -ArgumentList '/quiet','/norestart' -PassThru Start-Process -Wait -FilePath "$ExecutingScriptDirectory\AccessDatabaseEngine-2016_x64.exe" -ArgumentList '/quiet','/norestart' -PassThru Start-Process -Wait -FilePath "$ExecutingScriptDirectory\vcredist2015_2017_2019_2022_x64.exe" -ArgumentList '/quiet','/norestart' -PassThru New-Item -Path 'C:\TEMP' -ItemType Directory Expand-Archive -LiteralPath "$ExecutingScriptDirectory\DYMO-Connect.zip" -DestinationPath "C:\TEMP\DYMO-Connect" Start-Process -Wait -FilePath "C:\TEMP\DYMO-Connect\DYMO Connect.msi" -ArgumentList '/quiet','/norestart' -PassThru | |
Silently Install OpenDentalBAT OpenDental_21-4-37-0.msi /quiet /norestart | |
Silently Install Osstell Connect DriverBAT Osstell-Gateway_v1.10.exe /S | |
Silently Install Intermedia’s SecuriSync Desktop ClientBAT @echo off reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client2" > NUL 2> NUL IF %ERRORLEVEL% == 0 GOTO APP_CHECK_INSTALLATION echo "Installing .NET Framework 4" dotNetFx40_Full_x86_x64.exe /q :APP_CHECK_INSTALLATION IF EXIST "%ProgramFiles%\SecuriSync" GOTO APP_ALREADY_INSTALLED echo Installing SecuriSync SecuriSyncSetup-3.19.1.exe /quiet /L*V "%temp%\SecuriSyncInstallLog.txt" GOTO END :APP_ALREADY_INSTALLED echo SecuriSync is already installed. :END | |
Silently Install Microsoft Edge (Chromium)BAT MicrosoftEdgeEnterpriseX64.msi /quiet /norestart | |
Silently Install Wells Fargo’s Digital Check Scanner DriverPowerShell $ExecutingScriptDirectory = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent New-Item -Path 'C:\TEMP' -ItemType Directory Expand-Archive -LiteralPath "$ExecutingScriptDirectory\Wells-Fargo-Digital-Check-Scanner-Driver-2.5.0.zip" -DestinationPath "C:\TEMP\Wells-Fargo-Digital-Check-Scanner-Driver-2.5.0" Start-Process -Wait -FilePath "C:\TEMP\Wells-Fargo-Digital-Check-Scanner-Driver-2.5.0\Digital Check Scanner Driver.msi" -ArgumentList '/quiet','/norestart' | |
Silently Install Univerge Blue’s Connect Desktop ClientPowerShell # Define the URL of the file to download $url = "https://admin.univerge.blue/voice/pbx/softphonereleases/blue/latest-win/univerge-blue-connect.exe" # Make directory New-Item -Path 'C:\TEMP' -ItemType Directory -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue | Out-Null # Define the destination folder to extract to $destination = "C:\TEMP" # Download the file from the URL $downloadPath = Join-Path $destination "univerge-blue-connect.exe" Invoke-WebRequest -Uri $url -OutFile $downloadPath Start-Process "univerge-blue-connect.exe" -WorkingDirectory "C:\TEMP" -ArgumentList "/S /ALLUSERS" -PassThru | |
Silently Install Univerge Blue’s Share Desktop ClientPowerShell # Define the URL of the file to download $url = "https://us4sync.myonlinedata.net/update/v1.0/installers?customization_id=UnivergeBlueShare&client_type=Sync-WindowsApp" # Make directory New-Item -Path 'C:\TEMP' -ItemType Directory -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue | Out-Null # Define the destination folder to extract to $destination = "C:\TEMP" # Download the file from the URL $downloadPath = Join-Path $destination "univerge-blue-share.exe" Invoke-WebRequest -Uri $url -OutFile $downloadPath Start-Process "univerge-blue-share.exe" -WorkingDirectory "C:\TEMP" -ArgumentList "/quiet" -PassThru | |
Silently Install SentinelOne AgentBAT SentinelInstaller-x64_windows_64bit_v21_7_7_40005.exe /SITE_TOKEN={site-token} /SILENT | |
Silently Install Lithnet Idle LogoffPowerShell # Define the URL of the file to download $url1 = "https://github.com/lithnet/idle-logoff/releases/download/v1.2.8134/lithnet.idlelogoff.setup.msi" $url2 = "https://github.com/lithnet/idle-logoff/archive/refs/tags/v1.2.8134.zip" # Make directory new-item -path 'C:\TEMP' -itemtype directory -force -warningaction silentlycontinue -erroraction silentlycontinue | out-null # Define the destination folder to extract to $destination = "C:\TEMP" # Download the file from the URL $downloadpath1 = Join-Path $destination "lithnet.idlelogoff.setup.msi" $downloadpath2 = Join-Path $destination "idle-logoff-1.2.8134.zip" invoke-webrequest -uri $url1 -outfile $downloadpath1 invoke-webrequest -uri $url2 -outfile $downloadpath2 # Install Lithnet Idle Logoff msiexec.exe /i "C:\TEMP\lithnet.idlelogoff.setup.msi" /quiet /norestart expand-archive -literalpath "C:\TEMP\idle-logoff-1.2.8134.zip" -destinationpath "C:\TEMP\idle-logoff-1.2.8134" -force # Copy Policy Definitions copy-item -path "C:\TEMP\idle-logoff-1.2.8134\idle-logoff-1.2.8134\src\Lithnet.IdleLogoff\PolicyDefinitions" -destination "C:\Windows\SYSVOL\domain\Policies\PolicyDefinitions" -recurse -force copy-item -path "C:\TEMP\idle-logoff-1.2.8134\idle-logoff-1.2.8134\src\Lithnet.IdleLogoff\PolicyDefinitions" -destination "C:\Windows\PolicyDefinitions" -recurse -force | |
Silently Install Weave Desktop ClientPowerShell # Define the URL of the file to download $url = "https://storage.googleapis.com/software-updates.getweave.com/latest/Client.exe" # Make directory New-Item -Path 'C:\TEMP' -ItemType Directory -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue | Out-Null # Define the destination folder to extract to $destination = "C:\TEMP" # Download the file from the URL $downloadPath = Join-Path $destination "client.exe" Invoke-WebRequest -Uri $url -OutFile $downloadPath Start-Process "client.exe" -WorkingDirectory "C:\TEMP" -ArgumentList "/S" -PassThru Copy-Item "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Weave\Weave.lnk" -Destination "C:\Users\Public\Desktop" -Force -Confirm | |
Silently Install Microsoft 365 Desktop Application ShortcutsPowerShell # Copy and Paste Microsoft Office Shortcuts from ProgramData Directory Copy-Item -Path "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Access.lnk" -Destination 'C:\Users\Public\Desktop' -Force Copy-Item -Path "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Excel.lnk" -Destination 'C:\Users\Public\Desktop' -Force Copy-Item -Path "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Outlook.lnk" -Destination 'C:\Users\Public\Desktop' -Force Copy-Item -Path "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\PowerPoint.lnk" -Destination 'C:\Users\Public\Desktop' -Force Copy-Item -Path "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Publisher.lnk" -Destination 'C:\Users\Public\Desktop' -Force Copy-Item -Path "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Word.lnk" -Destination 'C:\Users\Public\Desktop' -Force | |
HP CMSL BIOS Update (WiP)PowerShell Work-in-progress BIOS update script using the HP Client Management Script Library (CMSL). <# Creator @gwblok - GARYTOWN.COM
Used to download BIOS Updates from HP, then Extract the bin file.
It then checks and suspends bitlocker and runs the upgrade. It does NOT reboot the machine, you can modify the command line to do that, or have your deployment method call the reboot.
The download and extract areas on in the TEMP folder, as well as the log.
REQUIREMENTS: HP Client Management Script Library
Download / Installer: https://ftp.hp.com/pub/caps-softpaq/cmit/hp-cmsl.html - This will download version 1.1.1. and install if needed
Docs: https://developers.hp.com/hp-client-management/doc/client-management-script-library-0
This Script was created using version 1.1.1
Updates: 2019.03.14
Replaced [Decimal] with [version]. Hopefully will fix issues caused by machines that had more than one decimal point in version.
Orginally had [Decimal] in code to remove leading "0" on BIOS version reported by HP. Example: Local Version said 1.45, from HP site as 01.45
Modified Bitlocker Detection. Technically, probably don't even need the suspend bitlocker code, as HP's upgrade util is supposed to do it.
Added logic for both HPBIOSUPDREC64.exe & HPFirmwareUpdRec64.exe updaters
#>
$OS = "Win10"
$Category = "bios"
New-Item -Path 'C:\TEMP' -ItemType Directory -Force
$HPContent = "C:\TEMP"
New-Item -Path 'C:\TEMP\Downloads' -ItemType Directory -Force
$DownloadDir = "C:\TEMP\Downloads"
New-Item -Path 'C:\TEMP\Extracted' -ItemType Directory -Force
$ExtractedDir = "C:\TEMP\Extracted"
$ProductCode = (Get-WmiObject -Class Win32_BaseBoard).Product
$Model = (Get-WmiObject -Class Win32_ComputerSystem).Model
$PoshURL = "https://hpia.hpcloud.hp.com/downloads/cmsl/hp-cmsl-1.6.3.exe"
try {
Get-HPBiosVersion
Write-Output "HP Module Installed"
}
catch {
Write-Output "HP Module Not Loaded, Loading.... Now"
Invoke-WebRequest -Uri $PoshURL -OutFile "$($DownloadDir)\HPCM.exe"
Start-Process -FilePath "$($DownloadDir)\HPCM.exe" -ArgumentList "/SP- /VERYSILENT /NORESTART /CLOSEAPPLICATIONS" -Wait
Import-Module HP.Softpaq
Write-Output "Finished Downloading and Installing HP Module"
}
$CurrentBIOS = Get-HPBiosVersion
Write-Output "Current Installed BIOS Version: $($CurrentBIOS)"
Write-Output "Checking Product Code $($ProductCode) for BIOS Updates"
$BIOS = Get-SoftpaqList -Platform $ProductCode -os $OS -Category $Category
$MostRecent = ($Bios | Measure-Object -Property "ReleaseDate" -Maximum).Maximum
$BIOS = $BIOS | WHERE "ReleaseDate" -eq "$MostRecent"
if ([version]$CurrentBIOS -ne [version]$Bios.Version)
{
Write-Output "Updated BIOS available, Version: $([version]$BIOS.Version)"
$DownloadPath = "$($DownloadDir)\$($Model)\$($BIOS.Version)"
if (-not (Test-Path $DownloadPath)){New-Item $DownloadPath -ItemType Directory}
$ExtractedPath = "C:\TEMP\Extracted"
if (-not (Test-Path $ExtractedPath)){New-Item $ExtractedPath -ItemType Directory}
Write-Output "Downloading BIOS Update for: $($Model) aka $($ProductCode)"
Get-Softpaq -number $BIOS.ID -saveAs "$($DownloadPath)\$($BIOS.id).exe" -Verbose
Write-Output "Creating Readme file with BIOS Info HERE: $($DownloadPath)\$($Bios.ReleaseDate).txt"
$BIOS | Out-File -FilePath "$($DownloadPath)\$($Bios.ReleaseDate).txt"
$BiosFileName = Get-ChildItem -Path "$($DownloadPath)\*.exe" | select -ExpandProperty "Name"
Write-Output "Extracting Downloaded BIOS File to: $($ExtractedPath)"
Start-Process -FilePath "$($DownloadPath)\$($BiosFileName).exe" -ArgumentList "/s /e /f $($ExtractedPath)" -Wait
if ((Get-BitLockerVolume -MountPoint c:).VolumeStatus -eq "FullyDecrypted")
{
Write-Output "Bitlocker Not Present"
}
Else
{
Write-Output "Suspending Bitlocker"
Suspend-BitLocker -MountPoint "C:" -RebootCount 1
}
if (Test-Path "$($ExtractedPath)\HPBIOSUPDREC64.exe")
{
Write-Output "Using HPBIOSUpdRec64.exe to Flash BIOS with Args -s -r -b -l"
#Start-Process "$($ExtractedPath)\HPBIOSUPDREC64.exe" -ArgumentList "-s -r -b -l$($HPContent)\HPBIOSUpdate.log" -wait
}
if (Test-Path "$($ExtractedPath)\HPFirmwareUpdRec64.exe")
{
Write-Output "Using HPFirmwareUpdRec64.exe to Flash BIOS with Args -s -r -b -l"
#Start-Process "$($ExtractedPath)\HPFirmwareUpdRec64.exe" -ArgumentList "-s -r -b -l$($HPContent)\HPBIOSUpdate.log" -wait
}
Write-Output "HP BIOS update Applied, Will Install after next reboot"
Start-Sleep -Seconds 120
Restart-Computer
}
ELSE
{Write-Output "BIOS already Current"} |
🗑️ Microsoft Software Removal & Cleanup
A collection of commands and scripts focused on uninstalling Microsoft applications and cleaning up leftover files to keep systems running smoothly and efficiently.
| Microsoft Software Removal & Cleanup | |
|---|---|
Uninstall Dell Bloatware and Microsoft Office Language Versions Except EnglishPowerShell Function Remove-App([String]$AppName){
$PackageFullName = (Get-AppxPackage $AppName).PackageFullName
$ProPackageFullName = (Get-AppxProvisionedPackage -Online | where {$_.Displayname -eq $AppName}).PackageName
Remove-AppxPackage -package $PackageFullName | Out-Null
Remove-AppxProvisionedPackage -online -packagename $ProPackageFullName | Out-Null
}
Function Remove-App-Registry([String]$AppName)
{
$appcheck = Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall | Get-ItemProperty | Where-Object {$_.DisplayName -eq $AppName } | Select-Object -Property DisplayName,UninstallString
if($appcheck -ne $null){
Write-Host $appcheck
$uninst = "$appcheck".split("=")[2].replace("}","")
$uninst ="`""+$uninst+"`"" + " /quiet"
Write-Host $uninst
cmd /c $uninst
}
else{
Write-Host "$id is not installed on this computer"
}
}
Function Remove-App-Registry2([String]$AppName)
{
$appcheck = Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall | Get-ItemProperty | Where-Object {$_.DisplayName -eq $AppName } | Select-Object -Property DisplayName,UninstallString
if($appcheck -ne $null){
$uninst = "$appcheck ".split("=")[2].replace("}","") + " /VERYSILENT"
cmd /c $uninst
}
else{
Write-Host "$id is not installed on this computer"
}
}
Function Remove-App-Registry3([String]$AppName)
{
$appcheck = Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall | Get-ItemProperty | Where-Object {$_.DisplayName -eq $AppName } | Select-Object -Property DisplayName,UninstallString
if($appcheck -ne $null){
$uninst = "$appcheck".split("=")[2]
$uninst = $uninst.Substring(0,$uninst.length-1) + " -silent"
Write-Host $uninst
cmd /c $uninst
}
else{
Write-Host "$id is not installed on this computer"
}
}
Function Remove-App-Registry4([String]$AppName)
{
$appcheck = Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall | Get-ItemProperty | Where-Object {$_.DisplayName -eq $AppName } | Select-Object -Property DisplayName,UninstallString
if($appcheck -ne $null){
Write-Host $appcheck
$uninst = "$appcheck".split("=")[2].replace("}","")
$uninst ="`""+$uninst+"`"" + " /S"
Write-Host ""
Write-Host $uninst
cmd /c $uninst
}
else{
Write-Host "$id is not installed on this computer"
}
}
Function Remove-App-Registry5([String]$AppName)
{
$appcheck = Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall | Get-ItemProperty | Where-Object {$_.DisplayName -eq $AppName } | Select-Object -Property DisplayName,UninstallString
if($appcheck -ne $null){
$uninst = $appcheck.UninstallString[1] + " /quiet"
cmd /c $uninst
}
else{
Write-Host "$id is not installed on this computer"
}
}
Function Remove-M365([String]$AppName)
{
$Uninstall = (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where {$_.DisplayName -like $appName} | Select UninstallString)
$Uninstall = $Uninstall.UninstallString + " DisplayLevel=False"
cmd /c $Uninstall
}
###########
# EXECUTE #
###########
# Active identifiers
Remove-App "Microsoft.GetHelp" # MS support chat bot
Remove-App "Microsoft.Getstarted" # 'Get Started' link
Remove-App "Microsoft.Messaging" # SMS app. Requires a phone link.
Remove-App "Microsoft.MicrosoftOfficeHub" # Office 365. Interferes with Office ProPlus
Remove-App "Microsoft.MicrosoftSolitaireCollection" # Game
Remove-App "Microsoft.OneConnect" # Paid WiFi and Cellular App
Remove-App "Microsoft.SkypeApp" # Skype
Remove-App "Microsoft.Wallet" # Mobile payment storage
Remove-App "microsoft.windowscommunicationsapps" # MS Calendar and Mail apps. Interferes with Office ProPlus
Remove-App "Microsoft.WindowsFeedbackHub" # MS Beta test opt-in app
Remove-App "Microsoft.YourPhone" # Links an Android phone to the PC
Remove-App "ZuneMusic"
Remove-App "DellInc.DellDigitalDelivery"
Remove-App-Registry "Dell SupportAssist Remediation"
Remove-App-Registry "Dell Optimizer"
Remove-App-Registry "Dell Trusted Device Agent"
Remove-App-Registry "Dell SupportAssist"
Remove-App-Registry "Dell Digital Delivery Services"
Remove-App-Registry "Dell Digital Delivery"
Remove-App-Registry "Xbox"
Remove-App-Registry "Xbox Live"
Remove-App-Registry2 "DELLOSD"
Remove-App-Registry3 "Dell SupportAssist OS Recovery Plugin for Dell Update"
Remove-App-Registry3 "Dell Optimizer Core"
Remove-App-Registry4 "Dell Display Manager 2.1"
Remove-App-Registry4 "Dell Peripheral Manager"
Remove-App-Registry5 "Dell SupportAssist Remediation"
Remove-M365 "Microsoft 365 - fr-fr"
Remove-M365 "Microsoft 365 - es-es"
Remove-M365 "Microsoft 365 - pt-br"
Remove-M365 "Microsoft OneNote - fr-fr"
Remove-M365 "Microsoft OneNote - es-es"
Remove-M365 "Microsoft OneNote - pt-br"
| |
Uninstall Remnants of SolidworksBAT ECHO ON REM This will silently uninstall SolidWorks, remove the SolidWorks directory, and clean REM the Windows registry. Review, edit, remove or comment out (REM) entries as needed. REM NOTE: Run the Copy Settings Wizard and back up all SolidWorks configuration files REM before running this batch file. REM ======================================= REM Remove the SolidWorks directory REM NOTE: This should point to the SolidWorks install directory. REM All customized documents (formats, etc.) should not be kept REM in this directory. Place them on the network and use REM Toos\Options\File Locations to point to the customized documents. RMDIR /S /Q "%APPDATA%\SOLIDWORKS" RMDIR /S /Q "%PROGRAMDATA%\SOLIDWORKS" RMDIR /S /Q "%LOCALAPPDATA%\SolidWorks RMDIR /S /Q "%COMMONPROGRAMFILES%\SOLIDWORKS Shared" RMDIR /S /Q "%COMMONPROGRAMFILES(x86)%\SOLIDWORKS Installation Manager" RMDIR /S /Q "%COMMONPROGRAMFILES(x86)%\SOLIDWORKS Shared" RMDIR /S /Q "%PROGRAMFILES%\SOLIDWORKS Corp" RMDIR /S /Q "%PROGRAMFILES(X86)%\SOLIDWORKS Corp" RMDIR /S /Q "%PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\SOLIDWORKS 2018" RMDIR /S /Q "%PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\SOLIDWORKS Installation Manager" DEL /S /Q "%PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\StartUp\SOLIDWORKS Background Downloader.lnk" REM ==================================== REM Remove the SolidWorks Windows Registry keys. REM NOTE: If mulitple versions of SolidWorks are installed on the same machine, edit REM the reg file to add the desired SolidWorks version name. REG DELETE "HKEY_CURRENT_USER\SOFTWARE\Solidworks\AddInsStartup" /F REG DELETE "HKEY_CURRENT_USER\SOFTWARE\Solidworks\Diagnostics" /F REG DELETE "HKEY_CURRENT_USER\SOFTWARE\Solidworks\General" /F REG DELETE "HKEY_CURRENT_USER\SOFTWARE\Solidworks\IM" /F REG DELETE "HKEY_CURRENT_USER\SOFTWARE\Solidworks\Licenses" /F REG DELETE "HKEY_CURRENT_USER\SOFTWARE\Solidworks\SOLIDWORKS 2018" /F REG DELETE "HKEY_CURRENT_USER\SOFTWARE\Solidworks\SOLIDWORKS CAM" /F REG DELETE "HKEY_CURRENT_USER\SOFTWARE\Solidworks\TipOfDay" /F REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\SolidWorks\AddIns" /F REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\SolidWorks\IM" /F REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\SolidWorks\Licenses" /F REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\SolidWorks\Security" /F REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\SolidWorks\SOLIDWORKS 2018" /F REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\SolidWorks\SOLIDWORKS CAM" /F REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\SolidWorks\Common Install" /F REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\SolidWorks\IM" /F REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\SolidWorks\Licenses" /F REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\SolidWorks\Security" /F REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\eDrawings" /F | |
Uninstall – ConnectWise and ScreenConnectPowerShell $url = "https://s3.amazonaws.com/assets-cp/assets/Agent_Uninstaller.zip"
$output = "C:\Windows\Temp\Agent_Uninstaller.zip"
(New-Object System.Net.WebClient).DownloadFile($url, $output)
# The below usage of Expand-Archive is only possible with PowerShell 5.0+
# Expand-Archive -LiteralPath C:\Windows\Temp\Agent_Uninstaller.zip -DestinationPath C:\Windows\Temp\LTAgentUninstaller -Force
# Use .NET instead
[System.Reflection.Assembly]::LoadWithPartialName("System.IO.Compression.FileSystem") | Out-Null
# Now we can expand the archive
[System.IO.Compression.ZipFile]::ExtractToDirectory('C:\Windows\Temp\Agent_Uninstaller.zip', 'C:\Windows\Temp\LTAgentUninstaller')
Start-Process -FilePath "C:\Windows\Temp\LTAgentUninstaller\Agent_Uninstall.exe" | |
Uninstall – Datto RMM and SplashtopBAT @echo off
taskkill /f /im gui.exe 2>nul
echo Waiting for Datto RMM to be removed...
"C:\Program Files (x86)\CentraStage\uninst.exe" /S 2>nul
powershell -ExecutionPolicy Bypass -Command "Start-Sleep -Seconds 10"
rmdir "C:\Program Files (x86)\CentraStage" /S /Q 2>nul
rmdir "C:\Windows\System32\config\systemprofile\AppData\Local\CentraStage" /S /Q 2>nul
rmdir "C:\Windows\SysWOW64\config\systemprofile\AppData\Local\CentraStage" /S /Q 2>nul
rmdir "%userprofile%\AppData\Local\CentraStage" /S /Q 2>nul
rmdir "%allusersprofile%\CentraStage" /S /Q 2>nul
REG delete "HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Run" /v CentraStage /f 2>nul
msiexec.exe /qn /x{B7C5EA94-B96A-41F5-BE95-25D78B486678}
rmdir "C:\Program Files (x86)\Splashtop" /S /Q 2>nul
rmdir "C:\ProgramData\Splashtop" /S /Q 2>nul
del "C:\Users\Public\Desktop\Agent Browser.lnk"
del "C:\Users\Public\Desktop\SentinelOne Agent.lnk"
|
🐧 Linux Miscellaneous Commands & Tips
A grab-bag of useful Linux commands, scripts, and tips for everyday tasks and troubleshooting across various distributions.
| Linux Miscellaneous Commands & Tips | |
|---|---|
Install Docker and Portainer.IONote The source page presents this as an Ubuntu quick-start for getting Docker running first, then deploying Portainer CE as a container management UI. Update System sudo apt update sudo apt upgrade Install Docker sudo apt install docker.io sudo systemctl enable docker sudo systemctl start docker sudo systemctl status docker Install Portainer.IO sudo docker run -d \ --name="portainer" \ --restart on-failure \ -p 9000:9000 \ -p 8000:8000 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce:latest | |
DD-WRT – Manually Flashing to Certain Partitions Using SSH or TelnetNote Example below is for a Linksys WRT1900ACSV2. The published snippet indicates that {linux | linux2} should be chosen based on whichever partition is not currently in use. Bash ubootenv get boot_part - To get current partition.
cd /tmp
wget ftp://ftp.dd-wrt.com/betas/2020/03-05-2020-r42617/linksys-wrt1900acsv2/ddwrt-linksys-wrt1900acsv2-webflash.bin
write ddwrt-linksys-wrt1900acsv2-webflash.bin {linux | linux2} - Depending on what partition is not being used.
erase nvram;nvram erase
reboot |
✅ Conclusion
If you have any scripts to share, questions about the commands, or run into issues, feel free to reach out! I’m always open to collaboration and happy to troubleshoot or improve these resources together. Your feedback and contributions help make this collection more useful for everyone.
🌿 Final Thoughts
This repository is a living workspace—constantly evolving with new tools, fixes, and ideas. Whether you’re an IT pro or just starting out, I hope you find these scripts and tips helpful in simplifying your workflows. Let’s keep learning and growing together!
My name is Dex, author at WinReflection.
I am a Christian, conservative, problem-solver, and truth-seeker who is not afraid to share about important or controversial issues—silence leads to death. There’s more to life than the worldly status quo, and that’s why many are sad and depressed—they’re suffocating. Truth and purpose can bring fresh air into one’s life, and that’s my mission. For those that care, here is my script/command laboratory.
📖 John 3:16: For God so loved the world that He gave His one and only Son, that whoever believes in Him shall not perish but have eternal life.


Leave a Reply
Want to join the discussion?Feel free to contribute!