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.
Leave a comment