86 lines
2.7 KiB
PowerShell
86 lines
2.7 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Enables the location setting and turns on the "Set the timezone automatically" switch in Time & Language > Date & Time.
|
|
|
|
.NOTES
|
|
Author: James Robinson | SkipToTheEndpoint | https://skiptotheendpoint.co.uk
|
|
Version: v1
|
|
Release Date: 2024-08-31
|
|
|
|
Intune Info:
|
|
Script type - Platform Script
|
|
Assign to - Devices
|
|
Script Settings:
|
|
Run this script using the logged on credentials - No
|
|
Enforce script signature check - No
|
|
Run script in 64-bit PowerShell Host - Yes
|
|
#>
|
|
|
|
#### Logging Variables ####
|
|
$Script:ScriptName = "OIB-AutoTimezone"
|
|
$Script:LogFile = "$ScriptName.log"
|
|
$Script:LogsFolder = "$env:ProgramData\Microsoft\IntuneManagementExtension\Logs"
|
|
|
|
#### Script Variables ####
|
|
$ErrorActionPreference = [System.Management.Automation.ActionPreference]::SilentlyContinue
|
|
$Host.UI.RawUI.WindowTitle = '$ScriptName'
|
|
|
|
$LocationValue = "Allow"
|
|
$AutoTZValue = "3"
|
|
$LFSVCValue = "1"
|
|
$SensorValue = "1"
|
|
|
|
#### Functions ####
|
|
function Start-Logging {
|
|
Start-Transcript -Path $LogsFolder\$LogFile -Append
|
|
Write-Host "Current script timestamp: $(Get-Date -f yyyy-MM-dd_HH-mm)"
|
|
}
|
|
|
|
function Set-RegistryValue {
|
|
param (
|
|
[string]$Path,
|
|
[string]$Name,
|
|
[string]$Value
|
|
)
|
|
try {
|
|
$currentValue = (Get-ItemProperty -Path $Path -Name $Name).$Name
|
|
if ($currentValue -ne $Value) {
|
|
Write-Host "Setting $Name to $Value at $Path"
|
|
Set-ItemProperty -Path $Path -Name $Name -Value $Value
|
|
}
|
|
else {
|
|
Write-Host "$Name is already set to $Value at $Path"
|
|
}
|
|
}
|
|
catch {
|
|
Write-Error "$($_.Exception.Message)"
|
|
}
|
|
}
|
|
|
|
#### Script ####
|
|
Start-Logging
|
|
|
|
try {
|
|
# Set the location value
|
|
Set-RegistryValue -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\location" -Name "Value" -Value $LocationValue
|
|
|
|
# Enable Auto Timezone value and (re)start service
|
|
Set-RegistryValue -Path "HKLM:\SYSTEM\CurrentControlSet\Services\tzautoupdate" -Name "Start" -Value $AutoTZValue
|
|
Set-RegistryValue -Path "HKLM:\SYSTEM\CurrentControlSet\Services\lfsvc\Service\Configuration" -Name "Status" -Value $LFSVCValue
|
|
Write-Host "(Re)Starting geolocation service"
|
|
$lfsvc = Get-Service -Name lfsvc
|
|
if ($lfsvc.Status -ne "Running") {
|
|
Start-Service -Name lfsvc
|
|
}
|
|
else {
|
|
Restart-Service -Name lfsvc -Force
|
|
}
|
|
|
|
# Set sensor value
|
|
Set-RegistryValue -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Sensor\Overrides\{BFA794E4-F964-4FDB-90F6-51056BFE4B44}" -Name "SensorPermissionState" -Value $SensorValue
|
|
Exit 0
|
|
}
|
|
catch {
|
|
Write-Error "$($_.Exception.Message)"
|
|
Exit 1
|
|
} |