RSAT-As-Admin.ps1

Param(
    [Switch]$Console = $false           #--[ Set to true to enable local console result display. Defaults to false ]--
)
<#==============================================================================
         File Name : RSAT-As-Admin.ps1
   Original Author : Kenneth C. Mazie (kcmjr AT kcmjr.com)
                   :
       Description : Automatically loads specified Windows RSAT AD Admin tools using the user ID you specify.
                   :
             Notes : Normal operation is with no command line options. The list of RSAT tools below
                   : should be commented in/out as needed. Tested on Windows 10 1803 only.
                   :
         Arguments : Command line options for testing:
                   : - "-console $true" will enable local console echo
                   :
          Warnings : None
                   :
             Legal : Public Domain. Modify and redistribute freely. No rights reserved.
                   : SCRIPT PROVIDED "AS IS" WITHOUT WARRANTIES OR GUARANTEES OF
                   : ANY KIND. USE AT YOUR OWN RISK. NO TECHNICAL SUPPORT PROVIDED.
                   : That being said, please let me know if you find bugs or improve the script.
                   :
           Credits : Code snippets and/or ideas came from many sources including but
                   : not limited to the following: n/a
                   :
    Last Update by : Kenneth C. Mazie
   Version History : v1.0 - 09-24-18 - Original
    Change History : v1.1 - 00-00-00 -
                   :
==============================================================================#>

<#PSScriptInfo
.VERSION 1.00
.GUID 75f90821-5799-44ed-af38-bc4e05f9e385
.AUTHOR Kenneth C. Mazie (kcmjr AT kcmjr.com)
.DESCRIPTION
Automatically loads specified Windows RSAT AD Admin tools using the user ID you specify.
#>

#Requires -Version 5.1

Clear-Host 
$Script:Credential = ""
$ThisDomain = (Get-ADDomain).DNSroot
$Credential = Get-Credential #-Credential "domain\username"

#------------------------------------------------------------------------------------------------------
$ToolList = @()   #--[ Array of separate items to allow easy addition or removal. Comment out lines for tools you don't want loaded ]--
#$ToolList += "dsac.exe" #--[ Active Directory Administrative Center ]--
$ToolList += "dsa.msc"              #--[ Active Directory Users and Computers ]--
#$ToolList += "domain.msc" #--[ Active Directory Domains and Trusts ]--
#$ToolList += "dssite.msc" #--[ Active Directory Sites and Services ]--
$ToolList += "gpmc.msc"             #--[ Group Policy Management ]--
$ToolList += "dhcpmgmt.msc"         #--[ DHCP Manager ]--
$ToolList += "dnsmgmt.msc"          #--[ DNS Manager ]--
$ToolList += "dfsmgmt.msc"          #--[ DFS Manager ]--
#$ToolList += "vmw.exe" #--[ Volume Activation Tools ]--
#$ToolList += "printmanagement.msc" #--[ Print Management ]--
#$ToolList += "nlbmgr.exe" #--[ Network Load Balancing Manager ]--
#$ToolList += "secpol.msc /s" #--[ Local Security Policy ]--
#$ToolList += "iscsicpl.exe" #--[ iSCSI Initiator ]--
#$ToolList += "fsrm.msc" #--[ File Server Resource Manager ]--
#$ToolList += "Cluadmin.msc" #--[ Failover Cluster Manager ]--
#$ToolList += "ClusterUpdateUI.exe" #--[ Cluster Aware Updating ]--
#$ToolList += "certsrv.msc" #--[ Certification Authority ]--
#$ToolList += "adsiedit.msc" #--[ ADSI Edit ]--
#--------------------------------------------------------------------------------------------------------

$ToolPath = "c:\windows\system32\"
[Environment]::CurrentDirectory = (Get-Location -PSProvider FileSystem).ProviderPath

$Result = disable-UEV 
#--[ Microsoft UE-V (User Experience Virtualization) is a tool that enables users to move from one Windows ]--
#--[ device to another and maintain the same operating system (OS) and applications settings. (i.e roaming) ]--
If ($Result -Like "*successfully*"){
    If ($Console){Write-host $Result -Foregroundcolor Green}
}Else{
    If ($Console){Write-Host "There was an error disabling UE-V" -ForegroundColor Red}
}

ForEach ($Tool in $ToolList){
    write-host "`n-------------------------------------------------------------------`n"
    If ($Tool.Split(" ").count -gt 1){    #--[ There is a space in the tool command meaning some sort of argument ]--
        $Arg = $Tool.Split(" ")[1]
        $Tool = $Tool.Split(" ")[0]
            
        If ($Tool.Split('.')[1] -eq "exe"){
            $Command = 'Start-Process "'+($ToolPath+$Tool+" "+$Arg)+'" -verb runas'
        }Else{
            $Command = 'Start-Process mmc.exe -verb runas -argument "'+($ToolPath+$Tool+" "+$Arg)+'"'
        }    
    }Else{
        If ($Tool.Split('.')[1] -eq "exe"){
            $Command = 'Start-Process '+($ToolPath+$Tool)+' -verb runas'
        }Else{
            $Command = 'Start-Process mmc.exe -verb runas -argument '+($ToolPath+$Tool)
        }    
    }

    #$Command #--[ Un-comment to display the resultant command line ]--

    If (Test-Path -Path ($ToolPath+$Tool)) {
        Start-Process powershell.exe -Credential $Credential -NoNewWindow -ArgumentList $Command
        If ($Console){write-host "Tool $Tool is starting..." -ForegroundColor Green}
    }Else{
        If ($Console){write-host "Tool $Tool was not found..." -ForegroundColor Red}
    }  
  
}