How to Load PS1 Files with in the Main File - PowerShell


Sathish Nadarajan
SharePoint MVP
Published On :   14 May 2016
Visit Count
Today :  2    Total :   2510
Plan, Migrate, Secure, Report
SharePoint & Office 365 Tool. Simple & Easy to Use. 15-Day Trial!

Sharegate: Kick-Ass Tool
Think Your SharePoint & Office 365 Are Secure ? Find Out Now!


A small tip for a clean programming. Instead of writing all the 1000 lines of code in the same PS1 file, let us write the Methods in a separate PS1 and from the main PS1, load the other files. This will not add any advantage in terms of performance. But, definitely help the developers to maintain a clean codebase and clear readability.

I have created a separate PS1 file called LoadMethods.ps1.

In that, I wrote the below methods.

 ############# Add the PowerShell Snappin ###############
 
 function AddPowerShellSnapin()
 {
     Add-Content "$ProgressFile" "Entered into AddPowerShellSnapin Method"
     $Progress = "0:Entered"
     try
     {
         Write-Host "Adding PowerShell Snap-in" -ForegroundColor Yellow
         # Try to get the PowerShell Snappin.  If not, then adding the PowerShell snappin on the Catch Block
         Get-PSSnapin "Microsoft.SharePoint.PowerShell" 
     }
     catch
     {
         if($Error[0].Exception.Message.Contains("No Windows PowerShell snap-ins matching the pattern 'Microsoft.SharePoint.PowerShell' were found"))
         {
             Add-PSSnapin "Microsoft.SharePoint.PowerShell"
         }
     }
     
     Write-Host "Finished Adding PowerShell Snap-in" -ForegroundColor Green
     
     Add-Content "$ProgressFile" "Finished AddPowerShellSnapin Method"
     
     $Progress = "0:Success"
 }
 
 ############# end of Method ###############
 
 ############# Load the configuration XML ###############
 
 function LoadConfigXML()
 {
     $Progress = "0:Entered"
     Write-Host "Entered into LoadConfigXML Method" -ForegroundColor Yellow 
     Add-Content "$ProgressFile" "Entered into LoadConfigXML Method"
     
     $ConfigXmlPath = $scriptBase + "\Configuration.xml"
     
     [Xml]$Config = Get-Content $ConfigXmlPath  
     
     Write-Host "Finished LoadConfigXML Method" -ForegroundColor Green 
     Add-Content "$ProgressFile" "Finished LoadConfigXML Method"
     
     return $Config
     
     $Progress = "0:Success"
 }
 
 ############# End of Method ###############  
 

Then from the main file, I just used the below lines.

 TRY
 {
     # Create the Progress Variable
     $Progress = "0"
  
     # Load the Methods
 	."$scriptBase\LoadMethods.ps1"
     
     # Clear the Last Execution
     cls
     
     # Add the PowerShell Snappin
     AddPowerShellSnapin
     
  
     
     # Load the Configuration File
     $Config = LoadConfigXML
 }
 CATCH
 {
 ###Catch the exception and do the rest of the things.
 }
 
 

Happy Coding,

Sathish Nadarajan.

SharePoint Usage Reports
Usage reports, collaboration and audit for SharePoint.
Categories

Migratiin Tools for SharePoint