101 lines
3.5 KiB
PowerShell
101 lines
3.5 KiB
PowerShell
# Ensure the log directory exists
|
|
$logDirectory = "C:\Logs"
|
|
if (-not (Test-Path -Path $logDirectory)) {
|
|
try {
|
|
New-Item -ItemType Directory -Path $logDirectory -Force | Out-Null
|
|
Write-Host "INFO: Created log directory at $logDirectory"
|
|
} catch {
|
|
Write-Host "ERROR: Failed to create log directory at $logDirectory - $_"
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
# Define the log file path with a timestamp
|
|
$logFile = Join-Path -Path $logDirectory -ChildPath "GeneralSetup_$(Get-Date -Format 'ddMMyyyy_HHmm').log"
|
|
|
|
# Function to write logs with different levels
|
|
function Write-Log {
|
|
param (
|
|
[Parameter(Mandatory=$true)]
|
|
[string]$Message,
|
|
|
|
[Parameter(Mandatory=$false)]
|
|
[ValidateSet("INFO", "WARNING", "ERROR")]
|
|
[string]$Level = "INFO"
|
|
)
|
|
|
|
# Prefix the message based on the level
|
|
switch ($Level) {
|
|
"ERROR" { $logMessage = "ERROR: $Message" }
|
|
"WARNING" { $logMessage = "WARNING: $Message" }
|
|
default { $logMessage = "INFO: $Message" }
|
|
}
|
|
|
|
# Add timestamp
|
|
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
|
|
$logEntry = "[$timestamp] $logMessage"
|
|
|
|
# Write to log file
|
|
Add-Content -Path $logFile -Value $logEntry
|
|
|
|
# Also output to console for visibility
|
|
Write-Output $logEntry
|
|
}
|
|
|
|
try {
|
|
Write-Log -Message "Starting script to configure timezone, locale, and region settings." -Level "INFO"
|
|
|
|
# Set the time zone to Australia/Perth
|
|
try {
|
|
Set-TimeZone -Id "W. Australia Standard Time" -ErrorAction Stop
|
|
Write-Log -Message "Successfully set timezone to 'W. Australia Standard Time'." -Level "INFO"
|
|
} catch {
|
|
Write-Log -Message "Failed to set timezone: $_" -Level "ERROR"
|
|
}
|
|
|
|
# Set the system locale to English (Australia)
|
|
try {
|
|
Set-WinSystemLocale -SystemLocale en-AU -ErrorAction Stop
|
|
Write-Log -Message "Successfully set system locale to 'en-AU'." -Level "INFO"
|
|
} catch {
|
|
Write-Log -Message "Failed to set system locale: $_" -Level "ERROR"
|
|
}
|
|
|
|
# Set the user locale to English (Australia)
|
|
try {
|
|
Set-WinUserLanguageList -LanguageList en-AU -Force -ErrorAction Stop
|
|
Write-Log -Message "Successfully set user language list to 'en-AU'." -Level "INFO"
|
|
} catch {
|
|
Write-Log -Message "Failed to set user language list: $_" -Level "ERROR"
|
|
}
|
|
|
|
# Set the culture to English (Australia)
|
|
try {
|
|
Set-Culture -CultureInfo en-AU -ErrorAction Stop
|
|
Write-Log -Message "Successfully set culture to 'en-AU'." -Level "INFO"
|
|
} catch {
|
|
Write-Log -Message "Failed to set culture: $_" -Level "ERROR"
|
|
}
|
|
|
|
# Set the region settings to Australia (GeoId 12)
|
|
try {
|
|
Set-WinHomeLocation -GeoId 12 -ErrorAction Stop
|
|
Write-Log -Message "Successfully set region settings to Australia (GeoId: 12)." -Level "INFO"
|
|
} catch {
|
|
Write-Log -Message "Failed to set region settings: $_" -Level "ERROR"
|
|
}
|
|
|
|
# Synchronize the system clock with an NTP server (optional)
|
|
try {
|
|
w32tm /resync | Out-Null
|
|
Write-Log -Message "Successfully synchronized system clock with NTP server." -Level "INFO"
|
|
} catch {
|
|
Write-Log -Message "Failed to synchronize system clock: $_" -Level "WARNING"
|
|
}
|
|
|
|
Write-Log -Message "Date, time, locale, and region settings have been set to Australia/Perth." -Level "INFO"
|
|
} catch {
|
|
Write-Log -Message "An unexpected error occurred in the script: $_" -Level "ERROR"
|
|
} finally {
|
|
Write-Log -Message "Script execution completed." -Level "INFO"
|
|
} |