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

Sathish Nadarajan
 
Solution Architect
May 14, 2016
 
Rate this article
 
Views
4683

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
 	."$scriptBaseLoadMethods.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.

Category : PowerShell

Author Info

Sathish Nadarajan
 
Solution Architect
 
Rate this article
 
Sathish is a Microsoft MVP for SharePoint (Office Servers and Services) having 15+ years of experience in Microsoft Technologies. He holds a Masters Degree in Computer Aided Design and Business ...read more
 

Leave a comment