Wednesday, April 22, 2015

Check if your script are running in administrator context

Doing system changes via a script files will often require that you run it in the context of administrator.

Doing this with script I run myself is easy enough, I know that if it fails it is because I forgot to use "Run as administrator" when I started it (or did a poor job creating the script).
However when creating scripts that other people will run it will be a good idea to add a check in the script and give feedback to the person running it.
Doing this from Powershell:
You need to create a function to do this from Powershell, or integrate it in the script.

function Test-IsAdmin {
([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")
}


More info HERE

 Doing this from a command line file (cmd):

 You can use "net session >nul 2>&1" to check and add one scenarios if success and another if failed. In my example, I just use the goto command since this gives a better structur to the script.

Example script that adds a line to the hosts. file (needs to be admin for this):


@echo off
goto check_Permissions

:check_Permissions
 echo.
 echo Administrative permissions required. Detecting permissions...
 echo.
    net session >nul 2>&1
    if %errorLevel% == 0 goto Success else goto Error
:Error
 echo Failure: Current permissions inadequate.
 echo.
 echo "! You need to run this as administrator"
 echo "! Right click the file and select Run As Administrator"
 echo.
goto END

:Success
 echo 192.168.10.10 pong.com >>  %Windir%\system32\drivers\etc\hosts.
 echo "! Changes successfull"
 echo.
:END
pause


Feedback when unsuccessfull:

 
Feedback when unsuccessfull:
 
 
And the end result of this script:-)
 
 
Just put in the commands or whatever you want in the :Success section of the script to be executed if it's running as administrator. And the message or commands you want to be executed if it's not running as administrator in the :Error section.
 
 


Exchange: Find mailboxes without language settings and fix it without messing up the correct once

Had some users that had problem setting up Outlook profile. When they logged on to the web mail interface they where asked about regional se...