Public/Sync-Profile.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function Sync-Profile {
  [CmdletBinding(SupportsShouldProcess)]
  param(
    [ValidateScript({
          if( -not ($_ | Test-Path -PathType Leaf) ){
            throw ('File does not exist - {0}' -f $_)
          }
          return $true
    })]
    [String]$LocalProfile = '\\localhost\ADMIN$\System32\WindowsPowerShell\v1.0\profile.ps1',
    [ValidateScript({
          if( -not ($_ | Test-Path -PathType Leaf) ){
            throw ('File does not exist - {0}' -f $_)
          }
          return $true
    })]
    [String]$WozProfile
  )
  if (-not ([System.Security.Principal.WindowsPrincipal][System.Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)){
    throw 'Admin privileges required'
  }
  if (Compare-Object -ReferenceObject (Get-FileHash -Path $WozProfile) -DifferenceObject (Get-FileHash -Path $LocalProfile) -Property Hash){
    Copy-Item -Path $WozProfile -Destination $LocalProfile -Force -PassThru -Confirm:$ConfirmPreference
  }
}