Laboratory



Silver Laptop on Wooden Table

Table of Contents

INTRO

This is an area for me to record code, scripts, commands, tips, and links for things I am working on and don’t want to forget. Since I work in the IT field as a full-time job, I find myself coming to WinReflection more frequently to get scripts and commands so I figured I would create this page to add things that aren’t published in a full-fledged guide or tutorial for mainly myself but also for others. Note some things may be unfinished, not tested, and or pending work.

MICROSOFT

Clear all Event Viewer Logs

BAT (Batchfile)
for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"

Clear all Logs in Windows Directory

BAT (Batchfile)
cd C:\Windows 
del *.log /a /s /q /f

Reinstall the Microsoft XPS Document Writer

BAT (Batchfile)
Dism /Online /Disable-Feature /FeatureName:"Printing-XPSServices-Features" /NoRestart
Dism /Online /Enable-Feature /FeatureName:"Printing-XPSServices-Features" /NoRestart

Click here for more information on enabling or disabling Windows features with DISM.

Reinstall the Microsoft Print to PDF Printer

BAT (Batchfile)
Dism /Online /Disable-Feature /FeatureName:"Printing-PrintToPDFServices-Features" /NoRestart
Dism /Online /Enable-Feature /FeatureName:"Printing-PrintToPDFServices-Features" /NoRestart

Click here for more information on enabling or disabling Windows features with DISM.

BAT (Batchfile)
Disable-WindowsOptionalFeature -Online -FeatureName Printing-PrintToPDFServices-Features -All
Enable-WindowsOptionalFeature -Online -FeatureName Printing-PrintToPDFServices-Features -All

Click here for more information on enabling or disabling Windows features with PowerShell.

Reinstall the Microsoft Fax Printer

BAT (Batchfile)
Dism /Online /Disable-Feature /FeatureName:"FaxServiceRole" /NoRestart
Dism /Online /Enable-Feature /FeatureName:"FaxServiceRole" /NoRestart

Click here for more information on enabling or disabling Windows features with DISM.

Reinstall the Microsoft XPS Viewer

BAT (Batchfile)
Dism /Online /Remove-Capability /CapabilityName:XPS.Viewer~~~~0.0.1.0
Dism /Online /Add-Capability /CapabilityName:XPS.Viewer~~~~0.0.1.0

Click here for more information on enabling or disabling Windows features with DISM.

Reset the Windows TCP/IP Stack

In the search box on the taskbar, type Command Prompt, press and hold (or right- click) Command Prompt, and then select Run as administrator > Yes.

At the command prompt, run the following commands in the listed order, and then check to see if that fixes your connection problem:

BAT (Batchfile)
netsh winsock reset
netsh int ip reset
ipconfig /release
ipconfig /renew
ipconfig /flushdns
arp -d

Click here for more tips on Windows network troubleshooting.
Click here for information on netsh command-line options.
Click here for information on ipconfig command-line options.

Backup BitLocker Recovery Information to AD after BitLocker is Turned on for Windows 7

BAT (Batchfile)
manage-bde -protectors -adbackup c: -id {id}

Click here for more information.
Click here for more information on manage-bde command-line options.

Windows 10 In-Place Upgrade via Command Line

Here are two examples:

BAT (Batchfile)
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"

Click here for more information on Windows Setup command-line options.

Manually and Automatically Removing IIS Log Files

  • Manually (Windows Server 2012):
BAT (Batchfile)
ForFiles.exe -p C:\inetpub\logs\LogFiles\W3SVC1 -m *.log -d -30 -c "CMD.exe /C Del @path"

This will delete log files older than 30 days from the “W3SVC1” folder, add other folders to remove more.

  • Automatically (Windows Server 2012):
    • Create a batch file at “C:\inetpub\logs\LogFiles\W3SVC_LogsMaintenance.bat”
    • Put your ForFiles commands in that batch file. Examples:
BAT (Batchfile)
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"
  • Scheduled the batch file to be called weekly on Sundays at 06:00.
BAT (Batchfile)
SchTasks /Create /SC Weekly /D SUN /ST 06:00 /TN "W3SVC Logs Maintenance" /TR "C:\inetpub\logs\LogFiles\W3SVC_LogsMaintenance.bat"

Click here for more information on forfiles command-line options.
Click here for more information on schtasks command-line options.

Force a Check Disk Scan in Windows on Next Boot

BAT (Batchfile)
fsutil dirty set c:

If the Check Disk scan does not complete, the dirty bit will not be removed meaning a Check Disk scan will be attempted on every boot. You can clear the dirty bit by:

BAT (Batchfile)
chkntfs /x c:

The /x tells Windows NOT to check volume C: on the next reboot. Manually reboot your computer, it should NOT run Check Disk now, but take you directly to Windows. However, obviously if Check Disk failed the system probably got stuck in a reboot loop because the dirty bit doesn’t get removed since Check Disk never completes.

You will need to boot either Windows PE, Windows installation media to Command Prompt, Windows-to-Go, or other custom boot media to manually run chkntfs /x c: to stop the loop. Once Windows has fully loaded, bring up another command prompt and execute the following command:

BAT (Batchfile)
chkdsk /f /r c:

This should take you through five stages of the scan and will unset that dirty bit. Verify that the dirty bit is gone:

BAT (Batchfile)
fsutil dirty query c:

Click here for more information on fsutil command-line options.
Click here for more information on chkntfs command-line options.
Click here for more information on chkdsk command-line options.

Connecting to Office 365 with PowerShell

PowerShell
$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

Click here for more information.

Download Latest Windows 10 ISO Directly from Microsoft (Home and Pro – RTM)

  • Go to this link:
  • Internet Explorer – F12 – Emulation tab – Browser Profile
  • Change to Windows Phone – Page will refresh.
  • Select version, then language, you will get two button links for a 32-bit and 64-bit ISO.

These ISOs also work with Windows 10 OEM Product Keys embedded in the BIOS.

Disable AutoDiscover so that Outlook Searches for Non-Microsoft Direct Exchange Servers

BAT (Batchfile)
reg add HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\AutoDiscover /t REG_DWORD /v ExcludeExplicitO365Endpoint /d 1

or

PowerShell
Set-ItemProperty -Path “HKCU:\Software\Microsoft\Office\16.0\Outlook\AutoDiscover” -Name ‘ExcludeExplicitO365Endpoint’ -Value 1 -Type DWORD –Force

Click here for information on reg add command-line options.
Click here for information on Set-ItemProperty command-line options.

Force Office to Update to a Specific Version Through Command-Line

BAT (Batchfile)
cd "C:\Program Files\Common Files\microsoft shared\ClickToRun" 
officec2rclient.exe /update user updatetoversion=16.0.6366.2062 displaylevel=false forceappshutdown=true

displaylevel=false – Stops the on-screen display of Office update.
forceappshutdown=true – Closes any Office apps to allow the update to complete.

Repair Corruptions in a Windows Installation

BAT (Batchfile)
sfc /scannow
findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >"%userprofile%\Desktop\SFC-Details.txt"

The above command will generate a text file that will highlights errors detected by the scan.

PowerShell
DISM.exe /Online /Cleanup-Image /RestoreHealth

Or to repair an online image using some of your own sources instead of Windows Update:

BAT (Batchfile)
DISM.exe /Online /Cleanup-Image /RestoreHealth /Source:c:\test\mount\windows /LimitAccess

Click here for more information on using System File Checker to repair a Windows install.
Click here for more information on using DISM to repair a Windows install.

Fix Problems that Block Programs from Being Installed or Removed

Download the troubleshooter here.

Microsoft Visual C++ Redistributable Latest Supported Downloads | All-in-One

Click here to get to Microsoft’s official downloads page.
Click here to download a third-party managed all-in-one installer package.

Reset Local Group Policy to Default

BAT (Batchfile)
RD /S /Q "%WinDir%\System32\GroupPolicyUsers"
RD /S /Q "%WinDir%\System32\GroupPolicy"
gpupdate /force

Repair TLS Settings and Resolve Security Complaints

Download IISCrypto here.

I have had times where certain websites complain about the client’s TLS security settings and give me recommendations of the settings to use. However even after changing them, the website still complains. IISCrypto usually fixes that issue for me, using the /best template.

IISCrypto CLI: The following are the switches for the command line version of IIS Crypto. All parameters are optional.

BAT (Batchfile)
/backup - Specify a file to backup the current registry settings too.

/template default - This template restores the server to the default settings.

/best - This template sets your server to use the best practices for TLS. It aims to be compatible with as many browsers as possible while disabling weak protocols and cipher suites.

/pci32 - This template is used to make your server PCI 3.2 compliant. It will disable TLS 1.0 and 1.1 which may break client connections to your website. Please make sure that RDP will continue to function as Windows 2008 R2 requires an update. See our FAQ for more information.

/strict - This template sets your server to use the strictest settings possible. It will disable TLS 1.0 and 1.1 and all non-forward secrecy cipher suites which may break client connections to your website. Please make sure that RDP will continue to function as Windows 2008 R2 requires an update. See our FAQ for more information.

/fips140 - This template makes your server FIPS 140-2 compliant. It is similar to the Best Practices template, however, it is not as secure as Best Practices because some of the weaker cipher suites are enabled.

Specify the filename of a template to use.

/reboot - Reboot the server after a template is applied.
/help|? - Show the help screen.

Here is an example that backs up the registry to a file named backup.reg, applies a custom template named MyServers.ictpl and reboots the server:

BAT (Batchfile)
iiscryptocli /backup backup.reg /template "C:\TEMP\MyServers.ictpl" /reboot

Latest Updates for Versions of Office that use Windows Installer (MSI)

Click here to go to Microsoft’s official page.
Click here for more information on installing Office updates.

Managing Exchange Mailboxes

  • Get Mailbox Folder Permissions and for Calendars:
PowerShell
Get-Mailbox | % { Get-MailboxFolderPermission(($_.PrimarySmtpAddress.ToString())+”:Calendar”) -User %username% -ErrorActionSilentlyContinue} | select Identity,User,AccessRights | Format-Table -Autosize -Wrap
  • Add Mailbox Folder Permissions and for Calendars:
PowerShell
Add-MailboxFolderPermission -Identity %calendarname@fqdn%:Calendar -User %username@fqdn% -AccessRights Editor
  • Remove Mailbox Folder Permissions and for Calendars:
PowerShell
Remove-MailboxFolderPermission -Identity "%fqdn/path/name:Calendar" -User %username%
  • Get Mailbox Folder Statistics:
PowerShell
Get-MailboxFolderStatistics "%username%" | ft Name, Identity, Folderpath, Foldertype | Format-Table -Autosize -Wrap

Restarting the Datto RMM Agent Remotely

PowerShell
Invoke-Command -ComputerName %HOSTNAME% {Restart-Service -NameCagService}
(Get-Service -ComputerName %HOSTNAME% -Name CagService).Restart()

Switching Users with Command Line if GUI Option is Missing

Open Command Prompt or PowerShell and enter the command below:

BAT (Batchfile)
tsdiscon

The ‘tsdiscon’ command will take you to the lock screen. From there, you can go through the usual process to login to any user account on the PC.

Click here for more information on tsdiscon command-line options.

This is beneficial for when a computer joined to a domain is off-site and away from the DC that uses a limited VPN client. By limited I mean the VPN client only works under a certain user profile and you need the VPN connected in order to login with a different domain account. If the domain account has never logged-in to the device before, there won’t be cached credentials so VPN will need to be working to reach the DC to login. I have had to do this with some FortiClient versions that don’t allow VPN connection before login, this is the workaround.

Use “Run as different user” Option in Right-Click Context Menu in Explorer

It’s my understanding that the “Run as administrator” option in Explorer’s right-click context menu invokes the local built-in Administrator account. It’s also my understanding that when using that option under a Standard non-admin user account, a credential prompt will come up asking for Administrator credentials.

However, when you enter them, Windows is just using those credentials to invoke the local built-in Administrator account to run the application or program in question. This means that the install does not run under the session of the credentials entered. This can be a problem in some cases where a program installs to user session that invoked it which would be the local built-in Administrator account.

You may need to use “Run as different user” option to choose a specific Administrator user account which is not the local built-in Administrator account. This is also helpful if the “Run as administrator” option is missing, disabled, or has issues. To get the option, do the following: Hold Ctrl + Shift, then right-click the program in question and you will see the option available in the context menu. A good little secret to know.

Not Seeing Mapped Network Drives for Certain User Sessions

Detail to configure the EnableLinkedConnections registry entry: In Registry Editor, locate and then click the following registry subkey:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

  • Right-click Configuration, select New, and then select DWORD (32-bit) Value.
  • Name the new registry entry as EnableLinkedConnections.
  • Double-click the EnableLinkedConnections registry entry.
  • In the Edit DWORD Value dialog box, type 1 in the Value data field, and then select OK.
  • Exit Registry Editor, and then restart the computer.Click here for more information.

Fix AppX Package Issues after AD Username Change

A user with an Active Directory account has recently obtained a name change. The user getting married, or the name was created incorrectly in the beginning of account creation, or the user wants their account name to be something different. It’s best practice to create a new account for the new name, but sometimes life happens. After the name change, when the user logs into Windows via their AD account onto the organization’s domain, their Windows 10 Store Apps may fail to start, open, or crash.

Try re-registering the Windows 10 AppX packages: Add the user account affected to the Local Administrators group on the affected client machine. Have the user login and try the commands below in PowerShell or in Command Prompt executing PowerShell:

PowerShell
Get-AppxPackage | ForEach-Object { Add-AppxPackage -DisableDevelopmentMode -Register ($_.InstallLocation + 'AppxManifest.xml')}

If the above command does not work, try this other variation of it below:

PowerShell
Get-AppxPackage | ForEach-Object { Add-AppxPackage -DisableDevelopmentMode -Register ($_.InstallLocation + '\AppxManifest.xml')}

Get Installed Features in Windows Server

PowerShell
Get-WindowsFeature | Where-Object -FilterScript { $_.Installed -Eq $TRUE }

Uninstall Windows Features in Windows Server

Example to uninstall the Sync Share for a File Server:

PowerShell
Uninstall-WindowsFeature -Name FS-SyncShareService

Disable AutoLock for WorkFolders

PowerShell
Set-SyncShare WorkFolders -PasswordAutolockExcludeDomain example.com
Set-SyncShare WorkFolders -RequirePasswordAutoLock $False
Get-SyncShare -Name "WorkFolders"

Lock Workstation

BAT (Batchfile)
powershell.exe -command "rundll32.exe user32.dll,LockWorkStation"

Domain Network Type Not Detected in Domain

BAT (Batchfile)
powershell.exe -command "Restart-Service NlaSvc -Force"

Create a task in Task Scheduler to run this command at boot for Window Servers not detecting the correct network type.

Get to Classic System Properties

In the Run box type:

shell:::{bb06c0e4-d293-4f75-8a90-cb05b6477eee}

Block Windows 11 Upgrade

PowerShell
# Get Windows Edition
$Edition = (Get-ComputerInfo | Select-Object -ExpandProperty WindowsProductName).Trim()
$RegistryPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate"

# Check if Windows Edition is not 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 – AutoDiscover

BAT (Batchfile)
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
REG ADD HKCU\SOFTWARE\Microsoft\Office\16.0\Outlook\AutoDiscover /V ExcludeExplicitO365Endpoint /T REG_DWORD /D 1 /F

Set OneDrive to Run at Startup

PowerShell
# 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 Disk

BAT (Batchfile)
echo 'y' | chkdsk.exe /f
dism /online /cleanup-image /restorehealth
sfc /scannow
dism /online /cleanup-image /restorehealth
sfc /scannow

MICROSOFT DEPLOYMENT

Generic Windows Product Keys

Click here to go to Microsoft’s official page.

Export all Third-Party Drivers of Current Running System to a Folder

Example commands below:

BAT (Batchfile)
DISM /Online /Export-Driver /Destination:"C:\TEMP\ThinkPad-P50-Drivers" 
Export-WindowsDriver -Online -Destination "C:\TEMP\ThinkPad-P50-Drivers"

Click here for more information on using DISM or PowerShell to export drivers.

Import and Install all Drivers to Current Running System from a Folder

BAT (Batchfile)
PnPUtil /Add-Driver "C:\TEMP\ThinkPad-P50-Drivers\*.inf" /Subdirs /Install /Reboot

Click here for more information on PnpUtil command-line options.

Register 32-bit and 64-bit .DLL and .OCX Files

BAT (Batchfile)
copy "C:\32-bit-dlls" "C:\Windows\SysWOW64"
copy "C:\64-bit-dlls" "C:\Windows\System32"

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 a 64-bit version of Windows operating system, there are two versions of the Regsv32.exe file:

The 64-bit version is %systemroot%\System32\regsvr32.exe.
The 32-bit version is %systemroot%\SysWoW64\regsvr32.exe.

Click here for more regsvr32 command-line options.

Import Windows Security Policy

PowerShell
$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 System

Turn on Hidden Files in File Explorer and backup the following folders to a location:

  • C:\Windows\System32\GroupPolicy
  • C:\Windows\System32\GroupPolicyUsers

Download the LGPO program from Microsoft here.

In Command Prompt navigate to the directory where you have extracted LGPO.exe and run commands:

BAT (Batchfile)
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"

There may be nothing in C:\Windows\System32\GroupPolicyUsers which contains policies tied to specific users only, you may not have any.

Click here for more information on LGPO command-line options.

Import and Enable AppLocker Policies and Enable APPIDSVC Service

BAT (Batchfile)
powershell -command "& {&'Import-Module' AppLocker}"; "& {&'Set-AppLockerPolicy' -XMLPOLICY C:\Deployment\AppLocker\example.xml}"
sc config APPIDSVC START=AUTO

Sysprep Command with Unattend.xml Created in WSIM

BAT (Batchfile)
cd C:\Windows\System32\Sysprep
sysprep.exe /generalize /oobe /shutdown /unattend:Unattend.xml

Install – Administrative Templates (Windows 11 22H2 v3.0) – Windows Server

PowerShell
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."
}

SOFTWARE DEPLOYMENT

Silently Install Intel Chipset Drivers

BAT (Batchfile)
SetupChipset.exe -overall -s -norestart

Silently Install Intel RST Drivers

BAT (Batchfile)
SetupRST.exe -s -overwrite

Silently Install Bitwarden Desktop Client

BAT (Batchfile)
Bitwarden-Installer-1.29.0.exe /ALLUSERS /S

Silently Install Egnyte Desktop Client

PowerShell
# 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 Connect

PowerShell
$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 OpenDental

BAT (Batchfile)
OpenDental_21-4-37-0.msi /quiet /norestart

Silently Install Osstell Connect Driver

BAT (Batchfile)
Osstell-Gateway_v1.10.exe /S

Silently Install Intermedia’s SecuriSync Desktop Client

BAT (Batchfile)
@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 (Batchfile)
MicrosoftEdgeEnterpriseX64.msi /quiet /norestart

Silently Install Wells Fargo’s Digital Check Scanner Driver

PowerShell
$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 Client

PowerShell
# 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 Client

PowerShell
# 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 Agent

BAT (Batchfile)
SentinelInstaller-x64_windows_64bit_v21_7_7_40005.exe /SITE_TOKEN={site-token} /SILENT

Silently Install Lithnet Idle Logoff

PowerShell
# 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 Client

PowerShell
# 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 Shortcuts

PowerShell
# 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
<#  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 REMOVAL


Uninstall Dell Bloatware and Microsoft Office Language Versions Except English

PowerShell
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 Solidworks

BAT (Batchfile)
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 ScreenConnect

PowerShell
$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 Splashtop

BAT (Batchfile)
@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

It’s super easy to get Docker and Portainer.IO up and running on Ubuntu with just a few commands.

Install Docker and Portainer.IO

Update System

Bash
sudo apt update
sudo apt upgrade

Install Docker

Bash
sudo apt install docker.io
sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker

Install Portainer.IO

Bash
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 Telnet

Example below is for a Linksys WRT1900ACSV2:

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 there is anything here that you would like to add please leave a comment below. Also please let me know if the page has helped you and if so, I will keep adding to it. Let me know of any issues.

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *