acllock lock "C:\Documents\secret.docx"acllock unlock "C:\Documents\secret.docx" -Forceacllock status "C:\Documents"Lock project folder during code freeze:
acllock lock "C:\Projects\WebApp" -Note "Code freeze for v2.0 release"Lock, do work, unlock:
# Lock
acllock lock "C:\Data\Processing"
# Do maintenance work
# ...
# Unlock when done
acllock unlock "C:\Data\Processing" -ForceLock multiple directories:
$directories = Get-ChildItem "C:\Projects" -Directory
foreach ($dir in $directories) {
if ($dir.Name -like "*Confidential*") {
acllock lock $dir.FullName -Note "Confidential project" -Force
}
}Preview changes before applying:
acllock lock "C:\Important\Data" -DryRunIntegrate with other tools:
$status = acllock status "C:\Data" -Json | ConvertFrom-Json
if ($status.isLocked) {
Write-Host "Data is secured"
} else {
Write-Host "Warning: Data is accessible"
}Schedule periodic checks:
# check-locks.ps1
$criticalPaths = @(
"C:\Credentials",
"C:\Keys",
"C:\Secrets"
)
foreach ($path in $criticalPaths) {
$status = acllock status $path -Json | ConvertFrom-Json
if (-not $status.isLocked) {
# Alert or re-lock
acllock lock $path -Force -Note "Auto-relock: $(Get-Date)"
Send-MailMessage -To "admin@company.com" -Subject "Path unlocked" -Body "Path $path was found unlocked"
}
}Lock configuration before deployment:
# Before deployment
acllock backup "C:\AppConfig\production.json"
acllock lock "C:\AppConfig\production.json" -Note "Locked during deployment"
# Deploy application
.\deploy.ps1
# After deployment
acllock unlock "C:\AppConfig\production.json" -ForceQuick lockdown during security incident:
# Lock all user data
Get-ChildItem "C:\Users" -Directory | ForEach-Object {
acllock lock $_.FullName -Force -Note "Security incident lockdown"
}function Lock-SensitiveData {
param(
[string]$Path,
[string]$Reason
)
Write-Host "Securing: $Path"
acllock lock $Path -Note $Reason -Force
# Log to your system
Add-Content "C:\Logs\security.log" "$(Get-Date): Locked $Path - $Reason"
}
# Usage
Lock-SensitiveData -Path "C:\CustomerData" -Reason "End of business day"# monitor-locks.ps1
$watchPaths = @("C:\Critical1", "C:\Critical2")
while ($true) {
foreach ($path in $watchPaths) {
$status = acllock status $path -Json | ConvertFrom-Json
if (-not $status.isLocked) {
Write-Warning "ALERT: $path is not locked!"
# Trigger alert
}
}
Start-Sleep -Seconds 60
}# Launch TUI
acllock tui
# Navigate with keyboard:
# 1 - Lock file
# 2 - Unlock file
# 3 - Lock folder
# 4 - Unlock folder
# 5 - Check status
# H - Help
# Q - Quitfunction Safe-Lock {
param([string]$Path)
try {
# Check if exists
if (-not (Test-Path $Path)) {
throw "Path does not exist"
}
# Check current status
$status = acllock status $Path -Json | ConvertFrom-Json
if ($status.isLocked) {
Write-Warning "Already locked: $Path"
return $false
}
# Lock with backup
acllock backup $Path
acllock lock $Path -Force
# Verify
$newStatus = acllock status $Path -Json | ConvertFrom-Json
if ($newStatus.isLocked) {
Write-Host "✓ Locked successfully: $Path"
return $true
} else {
Write-Error "Lock verification failed"
return $false
}
} catch {
Write-Error "Failed to lock: $($_.Exception.Message)"
return $false
}
}# If normal unlock fails
takeown /f "C:\LockedPath" /r /d y
icacls "C:\LockedPath" /reset /t
# Or use acllock restore
acllock restore "C:\LockedPath" -Force# Restore multiple paths
$paths = Get-ChildItem "C:\Projects" -Directory
foreach ($path in $paths) {
$backupExists = Test-Path (Join-Path $path.Parent.FullName ".acllock\$($path.Name).acl.backup")
if ($backupExists) {
Write-Host "Restoring: $($path.FullName)"
acllock restore $path.FullName -Force
}
}# 1. Test access
if (-not (Test-Path "C:\Data" -PathType Container)) {
Write-Error "Path not found"
exit 1
}
# 2. Dry run
acllock lock "C:\Data" -DryRun
# 3. Create manual backup
acllock backup "C:\Data"
# 4. Lock with note
acllock lock "C:\Data" -Note "Maintenance window: $(Get-Date)"
# 5. Verify
$status = acllock status "C:\Data" -Json | ConvertFrom-Json
if (-not $status.isLocked) {
Write-Error "Lock verification failed"
}# Task: Lock at 6 PM, unlock at 8 AM
# lock-schedule.ps1
$hour = (Get-Date).Hour
if ($hour -eq 18) {
# Evening lock
acllock lock "C:\SharedData" -Force -Note "After hours lockdown"
} elseif ($hour -eq 8) {
# Morning unlock
acllock unlock "C:\SharedData" -Force
}