Share via


Prompts

What does your function:\prompt look like?  Here’s mine:

 function prompt
{

    if ($Host.IsAdministrator -eq $null)
    {
        $CurrentUser = [Security.Principal.WindowsIdentity]::GetCurrent();
        $CurrentUserPrincipal = New-Object Security.Principal.WindowsPrincipal $CurrentUser;
        $AdminRole = [Security.Principal.WindowsBuiltinRole]::Administrator;
        Add-Member -InputObject $global:Host -Name IsAdministrator -MemberType NoteProperty -Value (
            [bool](($CurrentUserPrincipal).IsInRole($AdminRole))
        );

    } # if ($Host.IsAdministrator -eq $null)

    # setting the titlebar
    $host.UI.RawUI.WindowTitle = " $(

        $path = Get-Location;

        if ($path.ProviderPath)
        {
            $path.ProviderPath;

        } # if ($path.ProviderPath)
        else
        {
            $path.ToString();

        } # if ($path.ProviderPath)  ... else

    ) $(if ($host.IsAdministrator) { "Administrator "; })[$(

        Get-Date -Format 'yyyy-MM-dd HH:mm:ss')]";

    # setting the prompt
    "`n# $($env:UserDnsDomain.ToLower())\$env:UserName@$env:computerName.$((Get-WmiObject Win32_ComputerSystem).Domain) ".ToLower() + $(
        if ($history = Get-History | Select-Object -last 1)
        {
            ($history.EndExecutionTime - $history.StartExecutionTime).ToString() -replace "\..*";

        } # if ($history = Get-History | Select-Object -last 1)
        else
        {
            "00:00:00";

        } # if ($history = Get-History | Select-Object -last 1) ... else

    ) + " ($([int]((Get-History | Select-Object -Last 1).ID) + 1))`n# $(Get-Location) $('>' * $nestedpromptlevel)> `n";

} # function prompt

The $Host.IsAdministrator is something I set in my CommonFunctionLibrary.ps1:

 Write-Verbose "($(Get-Date)) Testing if user is in Administrator Group";
if ($Host.IsAdministrator -eq $null) 
{

    $CurrentUser = [Security.Principal.WindowsIdentity]::GetCurrent();
    $CurrentUserPrincipal = New-Object Security.Principal.WindowsPrincipal $CurrentUser;
    $Adminrole = [Security.Principal.WindowsBuiltinRole]::Administrator;
    Add-Member -InputObject $global:Host -Name IsAdministrator -MemberType NoteProperty -Value (
        [bool](($CurrentUserPrincipal).IsInRole($AdminRole))
    );

} # if ($Host.IsAdministrator -eq $null)