Blog de Florent Appointaire

Blog sur les technologies Microsoft (Windows Server, System Center, Azure, Windows Azure Pack/Azure Stack, etc;)

powershell_2

Je vais vous expliquer rapidement comment créer des modules Powershell. Ceci peut-être utile par exemple lorsque vous effectuez une tâches répétitives et qu’au lieu de lancer le script, vous appeler directement un commandlet. Dans un premier temps, écrivez votre script. Pour ma part, je vais faire simple, et je vais écrire un bout de code qui permet de relever certaines informations d’un ordinateur :

function ComputerInformations {
         <#
         .SYNOPSIS
         Get informations about your computer like Manufacturer, OS Version, Memory, etc.
         .DESCRIPTION
         See synopsis.
         .EXAMPLE
         ComputerInformations 'localhost'
         .PARAMETER computername
         The computer name to query. Just one.
         #>
         [CmdletBinding()]
         param (
                 [Parameter(Mandatory=$True,
                            ValueFromPipeline=$True,
                                    ValueFromPipelineByPropertyName=$True)]
             [Alias('host')]
                 [ValidateLength(3,30)]
                 [string[]]$computername
         )
         foreach ($computer in $computername) {

            $system = Get-WmiObject -Class Win32_ComputerSystem -ComputerName localhost
             $os = Get-WmiObject -class Win32_operatingsystem -computer localhost -erroraction stop
             $memory = [math]::round(($system.TotalPhysicalMemory / 1GB),2)
             $info = @{
                 'ComputerName'=$computer;
                 'OSVersion' = $os.caption;
                 'OSArchitecture' = $os.osarchitecture;
                 'Manufacturer' = $system.Manufacturer;
                 'Name' = $system.Name;
                 'Memory (GB)' = $memory;

            }

            $obj = New-Object -TypeName PSObject -Property $info
             write-output $obj
         }
}

Sauvegardez maintenant ce script avec l’extension .psm1 .
Pour connaître où sont stockés les modules, exécutez la commande suivante :

$env:PSModulePath
[Environment]::GetEnvironmentVariable("PSModulePath")

Pour ma part, j’ai le retour suivant :

image

Pour installer ce module sur un ordinateur, je vais créer un dossier ComputerInformations dans le chemin suivant :

C:\windows\system32\WindowsPowerShell\v1.0\Modules\

Ici, je vais déposer le fichier ComputerInformations.psm1.

Lancez Powershell, et tapez le nom de votre fonction. Le module doit être chargé directement.

image

Si je souhaite obtenir de l’aide :

image

Et des exemples :

image

Pour installer le module pour une session défini, déposez le fichier ComputerInformations.psm1 dans la partie Documents de l’utilisateur. Si les dossiers n’existent pas, n’hésitez pas à les créer :

C:\Users\fappointa\Documents\WindowsPowerShell\Modules

Si vous avez des questions ou que vous désirez plus d’informations, n’hésitez pas.

Facebook Like
Anonymous