Powershell:- Sourcing Files

Background

Microsoft’s Powershell is a very matured tool that provides various tooling towards modularized software development.

In this post, we will considering one of it foundational offerings.

Sourcing

For instance, you download a powershell script from an online source.

You look at the code and you like the way it does something.

So you identify its applicability towards some user cases.

You can either copy that code everywhere or keep in it’s original file.

In so doing, you can update that one file as the original author make’s changes.

 

Use Case

calculator

Original Code

 


Set-StrictMode -Version Latest

$script:ErrorActionPreference = "Stop"

[int] $number1 = 0;
[int] $number2 = 0;
[float] $result  = 0;
[string] $operator = "";
[string] $FORMAT_OUTPUT = "`t{0} {1} {2} is {3}";
[string] $log = "";

function calculatorEmbedded([string] $operator, [int] $number1, [int] $number2)
{
	[float] $result =0;
	
	if ($operator -eq "+" )
	{
		$result = $number1 + $number2;
	}
	elseif ($operator -eq "-" )
	{
		$result = $number1 - $number2;
	}	
	elseif ($operator -eq "*" )
	{
		$result = $number1 * $number2;
	}	
	elseif ($operator -eq "/" )
	{
		$result = $number1 / $number2;
	}
	elseif ($operator -eq "%" )
	{
		$result = $number1 % $number2;
	}
		
	
	return ($result);
	
}

$number1=4;

$number2=3;



<#
	Addition ( Plus [+] )
#>

	$operator = "+";

	$result = calculatorEmbedded $operator $number1 $number2

	$log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result;

	Write-Output $log;
	Write-Output "";
	
<#
	Subtract ( [-] ) 
#>

	$operator = "-";

	$result = calculatorEmbedded $operator $number1 $number2

	$log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result;

	Write-Output $log;
	Write-Output "";	
	
	
<#
	Multiply ( [*] ) 
#>

	$operator = "*";

	$result = calculatorEmbedded $operator $number1 $number2

	$log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result;

	Write-Output $log;
	Write-Output "";	
	
	
	
<#
	Division ( [/] ) 
#>

	$operator = "/";

	$result = calculatorEmbedded $operator $number1 $number2

	$log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result;

	Write-Output $log;
	Write-Output "";	
	
	
	
<#
	Modulo ( [%] ) 
#>

	$operator = "%";

	$result = calculatorEmbedded $operator $number1 $number2

	$log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result;

	Write-Output $log;
	Write-Output "";	


 

 

Revised Code

 

utilityCalculator.ps1


<#
	function calculatorModularized([string] $operator, [int] $number1, [int] $number2)
#>
function calculatorModularized ([string] $operator, [int] $number1, [int] $number2)
{
	[float] $result =0;
	
	if ($operator -eq "+" )
	{
		$result = $number1 + $number2;
	}
	elseif ($operator -eq "-" )
	{
		$result = $number1 - $number2;
	}	
	elseif ($operator -eq "*" )
	{
		$result = $number1 * $number2;
	}	
	elseif ($operator -eq "/" )
	{
		$result = $number1 / $number2;
	}
	elseif ($operator -eq "%" )
	{
		$result = $number1 % $number2;
	}
		
	
	return ($result);
	
}


calculatorModularized.ps1

 


Set-StrictMode -Version Latest

$script:ErrorActionPreference = "Stop"

<#
	Declare Constants
#>
Set-Variable FORMAT_OUTPUT -option Constant -value "`t{0} {1} {2} is {3}";

<#
	Declare Variables
#>
[int]    $number1 = 0;
[int]    $number2 = 0;
[float]  $result  = 0;
[string] $operator = "";
[string] $log = "";


<#
	Source File from utility\utilityCalculator.ps1
#>
. utility\utilityCalculator.ps1


$number1=4;

$number2=3;

Write-Output "";
Write-Output "";

<#
	Addition ( Plus [+] )
#>

	$operator = "+";

	$result = calculatorModularized $operator $number1 $number2

	$log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result;

	Write-Output $log;
	Write-Output "";
	
<#
	Subtract ( [-] ) 
#>

	$operator = "-";

	$result = calculatorModularized $operator $number1 $number2

	$log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result;

	Write-Output $log;
	Write-Output "";	
	
	
<#
	Multiply ( [*] ) 
#>

	$operator = "*";

	$result = calculatorModularized $operator $number1 $number2

	$log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result;

	Write-Output $log;
	Write-Output "";	
	
	
	
<#
	Division ( [/] ) 
#>

	$operator = "/";

	$result = calculatorModularized $operator $number1 $number2

	$log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result;

	Write-Output $log;
	Write-Output "";	
	
	
	
<#
	Modulo ( [%] ) 
#>

	$operator = "%";

	$result = calculatorModularized $operator $number1 $number2

	$log = $FORMAT_OUTPUT -f $number1, $operator, $number2, $result;

	Write-Output $log;
	Write-Output "";	
	

Source Code Control

GitLab

  1. Snippet ( Powershell – Sourcing )
    • Link
      Link
    • File Names
      • Whole
        • calculatorWhole.ps1
      • Modularized
        • Helper Functions
          • utilityCalculator.ps1
        • Main Unit
          • calculatorModularized.ps1

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s