For first timer, like me, in Powershell this could be a starting point for quite serious developing. Just to know: Powershell previously was made for Windows automation tasks and was used with VMware modules to automate vSphere, vRA, NSX (and many other) environments. Now this shell is available for Mac and Linux; check this for further info and installation (https://github.com/PowerShell/PowerShell).

It’s easy to automate using a single main flow:the execution starts from the first line and ends to end of the file. In this way all module should be invoked at the top of the file and a kind of result must be showed in the end or in the middle depending on conditional flows and/or what you’re reaching during execution.

But what happens when your are executing the same set of actions with a change of some variables? In every beginner programming guide there’s written: << you should use a function >>

The function construct

This is a standard template that could be used to build a function in many implementations:

 

There are 3 main parts:

  1. params: 0…more variables that could be used in the code execution. All of these are not available for other function or in the main stream
  2. process: the main code
  3. the return-s

 

You could call this function in 2 ways:

  • Using param position: Myfunction “one” “two”
  • Specifying every param, in this case the order in declaration doesn’t matter: Myfunction -sTwo “two” -sOne “one”

In some cases it could happens to pass a type of variable that is different from the type required in the function… don’t worry! variable casting is performing at param level.

 

The function callback… nightmare

Ok now let’s see what happens in this function:

Output:

image

Oh my gosh! all of echoed string in the output? Ok let’s go further:

image

Ok all of the echoed will join the return in array form:

image

If you wish to write a debug string during function execution you should use Write-Host:

image

 

Writing a module

A module is the good way to distribute your code across systems, user, … The abstraction and the documentation must be at the highest possible level because, the nature of the module is to distribute an implementation for general purpose. Well! let’s se a simple module construct:

The file extension of a Powershell module must be “.psm1” and could be invoked in a ps1 file or in the shell with the command ImportModule:

image

NOTE: if your developing and testing in the module, be sure you unload and re-import the module. Otherwise, new changes are not available until you correctly remove module from memory (the Import-Module skip additional import with the same module to avoid the duplication in memory).

By admin

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. Using this site you accept cooking utilization. maggiori informazioni more Informations

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo. This site uses cookies to provide the best browsing experience possible. By continuing to use this website without changing your cookie settings or clicking "Accept" allow their use.

Chiudi Close