Buscar..


Introducción

Los módulos de PowerShell brindan extensibilidad al administrador de sistemas, al DBA y al desarrollador. Ya sea simplemente como un método para compartir funciones y scripts.

Las funciones de Powershell son para evitar códigos repetitivos. Consulte [Funciones PS] [1] [1]: Funciones de PowerShell

Los scripts de PowerShell se utilizan para automatizar tareas administrativas que consisten en un shell de línea de comandos y cmdlets asociados construidos sobre .NET Framework.

Función

Una función es un bloque de código con nombre que se utiliza para definir un código reutilizable que debería ser fácil de usar. Normalmente se incluye dentro de un script para ayudar a reutilizar el código (para evitar el código duplicado) o se distribuye como parte de un módulo para que sea útil para otros en múltiples scripts.

Escenarios donde una función podría ser útil:

  • Calcula el promedio de un grupo de números.
  • Generar un informe para ejecutar procesos.
  • Escribir una función que pruebe que una computadora está "en buen estado" haciendo ping a la computadora y accediendo a c$ -share

Las funciones se crean utilizando la palabra clave de function , seguida de un nombre de una sola palabra y un bloque de script que contiene el código que se ejecutará cuando se llame el nombre de la función.

function NameOfFunction {
    Your code
}

Manifestación

function HelloWorld {
    Write-Host "Greetings from PowerShell!"
}

Uso:

> HelloWorld
Greetings from PowerShell!

Guión

Una secuencia de comandos es un archivo de texto con la extensión de archivo .ps1 que contiene los comandos de PowerShell que se ejecutarán cuando se llame la secuencia de comandos. Debido a que los scripts son archivos guardados, son fáciles de transferir entre computadoras.

Los guiones se escriben a menudo para resolver un problema específico, ej .:

  • Ejecutar una tarea de mantenimiento semanal
  • Para instalar y configurar una solución / aplicación en una computadora

Manifestación

MyFirstScript.ps1:

Write-Host "Hello World!"
2+2

Puede ejecutar un script ingresando la ruta al archivo usando un:

  • Camino absoluto, ej. c:\MyFirstScript.ps1
  • .\MyFirstScript.ps1 relativa, por ejemplo, .\MyFirstScript.ps1 si el directorio actual de su consola PowerShell era C:\

Uso:

> .\MyFirstScript.ps1
Hello World!
4

Un script también puede importar módulos, definir sus propias funciones, etc.

MySecondScript.ps1:

function HelloWorld {
    Write-Host "Greetings from PowerShell!"
}

HelloWorld
Write-Host "Let's get started!"
2+2
HelloWorld

Uso:

> .\MySecondScript.ps1
Greetings from PowerShell!
Let's get started!
4
Greetings from PowerShell!

Módulo

Un módulo es una colección de funciones reutilizables relacionadas (o cmdlets) que pueden distribuirse fácilmente a otros usuarios de PowerShell y usarse en múltiples scripts o directamente en la consola. Un módulo generalmente se guarda en su propio directorio y consta de:

  • Uno o más archivos de código con la extensión de archivo .psm1 que contiene funciones o ensamblajes binarios ( .dll ) que contienen cmdlets
  • Un módulo manifest .psd1 describe el nombre, la versión, el autor, la descripción de los módulos, las funciones / cmdlets que proporciona, etc.
  • Otros requisitos para que funcione incl. dependencias, scripts etc.

Ejemplos de módulos:

  • Un módulo que contiene funciones / cmdlets que realizan estadísticas en un conjunto de datos
  • Un módulo para consultar y configurar bases de datos.

Para facilitar a PowerShell encontrar e importar un módulo, a menudo se coloca en una de las ubicaciones de módulos de PowerShell conocidas definidas en $env:PSModulePath .

Manifestación

Enumere los módulos que están instalados en una de las ubicaciones de módulos conocidas:

Get-Module -ListAvailable

Importar un módulo, ej. Módulo Hyper-V :

Import-Module Hyper-V

Listar los comandos disponibles en un módulo, ej. el módulo de Microsoft.PowerShell.Archive

> Import-Module Microsoft.PowerShell.Archive
> Get-Command -Module Microsoft.PowerShell.Archive

CommandType Name             Version Source                      
----------- ----             ------- ------                      
Function    Compress-Archive 1.0.1.0 Microsoft.PowerShell.Archive
Function    Expand-Archive   1.0.1.0 Microsoft.PowerShell.Archive

Funciones avanzadas

Las funciones avanzadas se comportan de la misma manera que los cmdlets. El ISE de PowerShell incluye dos esqueletos de funciones avanzadas. Acceda a ellos a través del menú, editar, fragmentos de código o con Ctrl + J. (A partir de PS 3.0, las versiones posteriores pueden diferir)

Las cosas clave que incluyen funciones avanzadas son,

  • Get-Help incorporada y personalizada para la función, accesible a través de Get-Help
  • puede usar [CmdletBinding ()] que hace que la función actúe como un cmdlet
  • amplias opciones de parámetros

Versión simple:

<#
.Synopsis
   Short description
.DESCRIPTION
   Long description
.EXAMPLE
   Example of how to use this cmdlet
.EXAMPLE
   Another example of how to use this cmdlet
#>
function Verb-Noun
{
    [CmdletBinding()]
    [OutputType([int])]
    Param
    (
        # Param1 help description
        [Parameter(Mandatory=$true,
                   ValueFromPipelineByPropertyName=$true,
                   Position=0)]
        $Param1,

        # Param2 help description
        [int]
        $Param2
    )

    Begin
    {
    }
    Process
    {
    }
    End
    {
    }
}

Versión completa:

<#
.Synopsis
   Short description
.DESCRIPTION
   Long description
.EXAMPLE
   Example of how to use this cmdlet
.EXAMPLE
   Another example of how to use this cmdlet
.INPUTS
   Inputs to this cmdlet (if any)
.OUTPUTS
   Output from this cmdlet (if any)
.NOTES
   General notes
.COMPONENT
   The component this cmdlet belongs to
.ROLE
   The role this cmdlet belongs to
.FUNCTIONALITY
   The functionality that best describes this cmdlet
#>
function Verb-Noun
{
    [CmdletBinding(DefaultParameterSetName='Parameter Set 1', 
                  SupportsShouldProcess=$true, 
                  PositionalBinding=$false,
                  HelpUri = 'http://www.microsoft.com/',
                  ConfirmImpact='Medium')]
    [OutputType([String])]
    Param
    (
        # Param1 help description
        [Parameter(Mandatory=$true, 
                   ValueFromPipeline=$true,
                   ValueFromPipelineByPropertyName=$true, 
                   ValueFromRemainingArguments=$false, 
                   Position=0,
                   ParameterSetName='Parameter Set 1')]
        [ValidateNotNull()]
        [ValidateNotNullOrEmpty()]
        [ValidateCount(0,5)]
        [ValidateSet("sun", "moon", "earth")]
        [Alias("p1")] 
        $Param1,

        # Param2 help description
        [Parameter(ParameterSetName='Parameter Set 1')]
        [AllowNull()]
        [AllowEmptyCollection()]
        [AllowEmptyString()]
        [ValidateScript({$true})]
        [ValidateRange(0,5)]
        [int]
        $Param2,

        # Param3 help description
        [Parameter(ParameterSetName='Another Parameter Set')]
        [ValidatePattern("[a-z]*")]
        [ValidateLength(0,15)]
        [String]
        $Param3
    )

    Begin
    {
    }
    Process
    {
        if ($pscmdlet.ShouldProcess("Target", "Operation"))
        {
        }
    }
    End
    {
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow