public/Test-UserIsAdministrator.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
29
30
31
32
33
$gzCurrentUserIsAdministrator = $null

function Test-UserIsAdministrator() {
    
    [CmdletBinding()]
    Param(
        [Switch] $Force 
    )
    
    PROCESS {
        if($null -ne $gzCurrentUserIsAdministrator -and !($Force.ToBool())) {
            return $gzCurrentUserIsAdministrator
        }

        $platform = Get-OsPlatform 

        switch($platform) {
            {$PSItem.StartsWith("Win")} {
                $gzCurrentUserIsAdministrator = Test-WinUserIsInRole -BuiltInRole "Administrator"
            }
            {$PSItem -eq "MacOSX" -or $PSItem -eq "Unix"} {
                $gzCurrentUserIsAdministrator = Test-UnixUserIsInRole -Group "Root"
            }
            Default {
                $plat = [Environment]::OsVersion.Platform
                Write-Warning "$plat Not Supported"
                $gzCurrentUserIsAdministrator = $false
            }
        }

        return $gzCurrentUserIsAdministrator
    }
}