PowerShell
Moduler, skript och funktioner
Sök…
Introduktion
PowerShell-moduler ger utdragbarhet för systemadministratören, DBA och utvecklaren. Oavsett om det helt enkelt är en metod för att dela funktioner och skript.
Powershell-funktioner är att undvika repitetiva koder. Se [PS-funktioner] [1] [1]: PowerShell-funktioner
PowerShell-skript används för att automatisera administrativa uppgifter som består av kommandoradsskal och tillhörande cmdleter byggda ovanpå .NET Framework.
Fungera
En funktion är ett namnblock med kod som används för att definiera återanvändbar kod som ska vara lätt att använda. Det ingår vanligtvis i ett skript för att återanvända kod (för att undvika duplikatkod) eller distribueras som en del av en modul för att göra den användbar för andra i flera skript.
Scenarier där en funktion kan vara användbar:
- Beräkna medelvärdet för en grupp siffror
- Skapa en rapport för körning av processer
- Skriv en funktion som testar att en dator är "frisk" genom att pinga på datorn och komma åt
c$
-delningen
Funktioner skapas med hjälp av function
, följt av ett enda ordnamn och ett skriptblock som innehåller koden som ska utföras när funktionsnamnet kallas.
function NameOfFunction {
Your code
}
demo
function HelloWorld {
Write-Host "Greetings from PowerShell!"
}
Användande:
> HelloWorld
Greetings from PowerShell!
Manus
Ett skript är en textfil med filändelsen .ps1
som innehåller PowerShell-kommandon som kommer att köras när skriptet anropas. Eftersom skript är sparade filer är de enkla att överföra mellan datorer.
Skript skrivs ofta för att lösa ett specifikt problem, t.ex.
- Kör en underhållsuppgift varje vecka
- För att installera och konfigurera en lösning / applikation på en dator
demo
MyFirstScript.ps1:
Write-Host "Hello World!"
2+2
Du kan köra ett skript genom att ange sökvägen till filen med ett:
- Absolut väg, ex.
c:\MyFirstScript.ps1
- Relativ sökväg, ex
.\MyFirstScript.ps1
om den aktuella katalogen för din PowerShell-konsol varC:\
Användande:
> .\MyFirstScript.ps1
Hello World!
4
Ett skript kan också importera moduler, definiera egna funktioner etc.
MySecondScript.ps1:
function HelloWorld {
Write-Host "Greetings from PowerShell!"
}
HelloWorld
Write-Host "Let's get started!"
2+2
HelloWorld
Användande:
> .\MySecondScript.ps1
Greetings from PowerShell!
Let's get started!
4
Greetings from PowerShell!
Modul
En modul är en samling relaterade återanvändbara funktioner (eller cmdlets) som enkelt kan distribueras till andra PowerShell-användare och användas i flera skript eller direkt i konsolen. En modul sparas vanligtvis i sin egen katalog och består av:
- En eller flera
.psm1
filtillägget.psm1
innehåller funktioner eller binära enheter (.dll
) som innehåller cmdlets - Ett
.psd1
beskriver.psd1
namn, version, författare, beskrivning, vilka funktioner / cmdlets den tillhandahåller etc. - Andra krav för att den ska fungera inkl. beroenden, skript etc.
Exempel på moduler:
- En modul som innehåller funktioner / cmdleter som utför statistik över en datasats
- En modul för frågning och konfigurering av databaser
För att göra det enkelt för PowerShell att hitta och importera en modul placeras den ofta på en av de kända PowerShell-modulplatserna definierade i $env:PSModulePath
.
demo
Lista moduler som är installerade på en av de kända modulplatserna:
Get-Module -ListAvailable
Importera en modul, t.ex. Hyper-V
modul:
Import-Module Hyper-V
Lista tillgängliga kommandon i en modul, t.ex. Microsoft.PowerShell.Archive
modulen
> 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
Avancerade funktioner
Avancerade funktioner fungerar på samma sätt som cmdlets. PowerShell ISE innehåller två skelett med avancerade funktioner. Få åtkomst till dessa via menyn, redigera, kodavsnitt eller med Ctrl + J. (Från och med PS 3.0 kan senare versioner skilja sig åt)
Viktiga saker som avancerade funktioner inkluderar är,
- inbyggd, anpassad hjälp för funktionen, tillgänglig via
Get-Help
- kan använda [CmdletBinding ()] som gör att funktionen fungerar som en cmdlet
- omfattande parameteralternativ
Enkel version:
<#
.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
{
}
}
Komplett version:
<#
.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
{
}
}