#Using Set-Alias In PowerShell To Create Shortcuts To Functions In Windows 10 Edition
#These commands also work in both PowerShell and PowerShell Direct. You can also do this in Microsoft Windows Server 2016.
#Just the code:
Function funk_cnkermit {Enter-PSSession -ComputerName KERMIT -Credential DOMAIN\administrator} #Set fucntion to enter a PowerShell Remote session Set-Alias kermit funk_cnkermit #Create Alias using computer name Function funk_vmserver2016 {Enter-PSSession -VMName Server2016 -Credential DOMAIN\administrator} #Set function to enter a PowerShell Direct session Set-Alias server2016 funk_vmserver #Create Alias using virtual machine name
#The Longer Story…
#These are two basic functions, but the functions you control with Set-Alias
can be much more complicated. An Alias is just a shortcut to a command with a long name, but without any parameters. Parameters still need to be added to most commands when running an Alias. A function can contain commonly used parameters or even more complex command structures. You will also need to add permanent functions to your $Profile
for PowerShell and PowerShell ISE separately since they are controlled by two different startup files.
#Using Set-Alias
In PowerShell To Create Shortcuts To Functions
#As an example, I am going to create a function to run Enter-PSSession
to connect using PowerShell Remote. I also create a similar function to connect using PowerShell Direct so I just type the value of either the -VMName
or the -ComputerName
to enter my password and connect.
#KERMIT
is the computer name of my server. The name of the virtual machine is Server2016
. These commands would need to be modified to fit your environment.
#List available Functions using Out-GridView
in PowerShell ISE or not
#Note: Out-GridView
does not work in a remote session or in PowerShell command prompt.
Get-ChildItem Function: #Take a look a the functions currently defined Get-ChildItem Function:|Out-GridView #Use PowerShell ISE to provide a grid view of the output
#Check the pre-defined list of aliases using Out-GridView
in PowerShell ISE or not
#See pre-defined Alias list
Get-ChildItem Alias: #Take a look at the currently defined alias list Get-ChildItem Alias:|Out-GridView #Use PowerShell ISE to provide a grid view of the output
#Create Two New Functions To Connect To Server Using PowerShell Remote and PowerShell Direct
#One function called funk_cnkermit
initiates a connection to the computer name (-ComputerName
) of the server and the other, funk_vmserver2016
, connects to a virtual machine name (-VMName
). The function name can be anything that is guaranteed to stay unique. The command inside the {}
could be any commands that you find useful and use frequently. Multiple lines of code are also supported.
Function funk_cnkermit {Enter-PSSession -ComputerName KERMIT -Credential DOMAIN\administrator} #Set fucntion to enter a PowerShell Remote session
Function funk_vmserver2016 {Enter-PSSession -VMName Server2016 -Credential DOMAIN\administrator} #Set function to enter a PowerShell Direct session
#Use The Set-Alias
PowerShell Command To Create Shorter Commands And To Trigger Custom Functions Into Action Without Repetitive Keystrokes
#Set an alias to each new function using the computer name kermit
and the virtual machine name server2016
using the commands below:
Set-Alias kermit funk_cnkermit #Create Alias using computer name
Set-Alias server2016 funk_vmserver2016 #Create Alias using virtual machine name
#Here Is A Useful Docker Function I Created
Function funk_DockerCleanExitedContainers {docker.exe rm $(docker ps -q -f status=exited)} #Function to automatically clean exited containers in Docker Set-Alias Docker-CleanExitedContainers funk_DockerCleanExitedContainers #Set Alias name
#I’m sure there are much more complicated functions that I’ll add along the way, but just having an alias to Enter-PSSession
is such a time saver. Don’t forget to use AutoComplete or Tab to save time when typing all of Docker-CleanExitedContainers
. Once the Alias is set, it will be as if it was a command in the environment path.