Add Microsoft.SharePoint.PowerShell Snap-In to All PowerShell Windows
This post will show you how to ensure Add-PSSnapin "Microsoft.SharePoint.PowerShell" has been executed in all PowerShell windows.
Background
I have been doing a lot of work in PowerShell lately, and found myself frequently in the PowerShell ISE window writing scripts. I was constantly adding the line Add-PSSnapin "Microsoft.SharePoint.PowerShell" at the top of every script I wrote, and I wanted it to just already be there like it is when I run the SharePoint 2010 Management Shell. You can add the SharePoint snap-in to all PowerShell windows, so it will be available when you run PowerShell ISE and you don't have to remember to add the snap-in to every script you run.
Implementation
Credit goes to SharePoint and PowerShell guru Gary Lapointe for this tip. Open up PowerShell ISE and run the following to create a profile script if one doesn’t exist and edit it in the ISE:
if (!(test-path $profile.AllUsersAllHosts)) {new-item -type file -path $profile.AllUsersAllHosts –force}
powershell_ise $profile.AllUsersAllHosts
That will open a new tab in PowerShell ISE allowing you to edit profile.ps1. If you simply execute $profile.AllUsersAllHosts, you will see the path where this file is stored (be default it is C:\Windows\System32\WindowsPowerShell\v1.0).
In PowerShell ISE, you will now have a new tab where you can edit this file. In that new tab, add the following code and then save the file.
$ver = $host | select version
if ($ver.Version.Major -gt 1) {$host.Runspace.ThreadOptions = "ReuseThread"}
if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null)
{
Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}
The edit window looks like this:
Now, close PowerShell ISE and then open it again. It will take a little longer than usual to open the window because it is executing the code from Profile.ps1 and adding the Microsoft.SharePoint.PowerShell snap-in. To test it, run a command such as Get-SPFarm.
That simple little trick has saved me hours of frustration while editing scripts, and has enabled me to really start leveraging PowerShell ISE. Thanks to Gary for his great insight at: https://social.technet.microsoft.com/Forums/en/sharepoint2010setup/thread/fcb77654-0f13-42e0-b181-6e52242fe9d6.
If you are interested in PowerShell and SharePoint and haven’t visited Gary’s blog, do so immediately… it is a great resource. https://blog.falchionconsulting.com.
Update: Spence Harbar let me know that he has a post doing something very similar, executing the same script that the SharePoint 2010 Management Shell executes. https://www.harbar.net/archive/2010/05/03/adding-sharepoint-2010-poweshell-cmdlets-to-your-powershell-ise.aspx
For More Information
Adding SharePoint 2010 PoweShell cmdlets to your PowerShell ISE
SharePoint 2010 Products administration by using Windows PowerShell
Add-PSSnapIn Microsoft.SharePoint.PowerShell Failing after SharePoint Install
Comments
Anonymous
November 13, 2011
Thanks for useful infoAnonymous
November 14, 2011
Thanks, always knew there must be a better way and here it is.Anonymous
October 28, 2014
To load any module upon opening PowerShell, do the following:Open PowerShell Type: $profile Create the path and file if required --OR-- for all PowerShell/ISE/USERS: create the file C:WindowsSystem32WindowsPowerShellv1.0profile.ps1 Open the .ps1 in PowerShellISE Modify to include modules you require, i.e.: Import-Module applicablePSmodulehere Save Test (close all PowerShells, open new one) Cake?Anonymous
November 09, 2014
thanks for this, i found on my particular OS installation, that i had to copy the profile.ps1 form /examples folder. alternatively, create an empty profile.ps1 file!Anonymous
January 13, 2015
Thanks! This is just what I needed.Anonymous
February 11, 2015
It seems that at some point during all these CU's since your post. if the machine is rebooted, the Forefront Identity Sync Service stops and can't be restarted. I renamed my Profile.ps1 and was able to start it successfully. Go Figure...Anonymous
March 10, 2015
This is so helpful! Thanks Kirk!Anonymous
July 16, 2015
And what do you do when you get the error "Add-PSSnapin : The Windows PowerShell snap-in 'Microsoft.SharePoint.PowerShell' is not installed on this computer' ?Anonymous
October 13, 2015
Tom, if you are in the same position as me, you are likely missing the Microsoft.SharePoint.PowerShell folder in C:WindowsMicrosoft.NETassemblyGAC_MSIL. I have yet to find a way to install this, but I believe this folder missing is related to why we are unable to add the snapin. I am using Windows 10 with Powershell ISEAnonymous
October 13, 2015
In order for the SharePoint bits to be available on the local computer, you need to have SharePoint installed on the local computer. I believe that SharePoint 2010 was the last release that you could install on a client OS, and I am unsure if it was supported only on Windows 7. You cannot install SharePoint 2013 or SharePoint 2016 on a client OS like Windows 8 or Windows 10, you must install it on a server OS. You could instead use a script that initiates PowerShell remoting to another machine, enabling you to run PowerShell commands against a SharePoint server that you manage.