Restart-ScriptWithElevatedPermissions.psm1

Function Restart-WithElevatedPermissions ($scriptFullName) {

  $myWindowsID=[System.Security.Principal.WindowsIdentity]::GetCurrent()
  $myWindowsPrincipal=New-Object System.Security.Principal.WindowsPrincipal($myWindowsID)
  $adminRole=[System.Security.Principal.WindowsBuiltInRole]::Administrator

  If (-NOT $myWindowsPrincipal.IsInRole($adminRole)) {
    $arguments = "& '" + $ScriptFullName + "'"
    Start-Process PowerShell -Verb runAs -ArgumentList $arguments
    Exit
  }
}