PowerShell
Guida basata sui commenti
Ricerca…
introduzione
PowerShell presenta un meccanismo di documentazione chiamato guida basata su commenti. Permette di documentare script e funzioni con commenti al codice. La guida basata su commenti è la maggior parte delle volte scritta in blocchi di commenti contenenti più parole chiave di aiuto. Aiuta le parole chiave a iniziare con i punti e identifica le sezioni di aiuto che verranno visualizzate eseguendo il cmdlet Get-Help
.
Guida basata sui commenti
<#
.SYNOPSIS
Gets the content of an INI file.
.DESCRIPTION
Gets the content of an INI file and returns it as a hashtable.
.INPUTS
System.String
.OUTPUTS
System.Collections.Hashtable
.PARAMETER FilePath
Specifies the path to the input INI file.
.EXAMPLE
C:\PS>$IniContent = Get-IniContent -FilePath file.ini
C:\PS>$IniContent['Section1'].Key1
Gets the content of file.ini and access Key1 from Section1.
.LINK
Out-IniFile
#>
function Get-IniContent
{
[CmdletBinding()]
Param
(
[Parameter(Mandatory=$true,ValueFromPipeline=$true)]
[ValidateNotNullOrEmpty()]
[ValidateScript({(Test-Path $_) -and ((Get-Item $_).Extension -eq ".ini")})]
[System.String]$FilePath
)
# Initialize output hash table.
$ini = @{}
switch -regex -file $FilePath
{
"^\[(.+)\]$" # Section
{
$section = $matches[1]
$ini[$section] = @{}
$CommentCount = 0
}
"^(;.*)$" # Comment
{
if( !($section) )
{
$section = "No-Section"
$ini[$section] = @{}
}
$value = $matches[1]
$CommentCount = $CommentCount + 1
$name = "Comment" + $CommentCount
$ini[$section][$name] = $value
}
"(.+?)\s*=\s*(.*)" # Key
{
if( !($section) )
{
$section = "No-Section"
$ini[$section] = @{}
}
$name,$value = $matches[1..2]
$ini[$section][$name] = $value
}
}
return $ini
}
La documentazione della funzione sopra può essere visualizzata eseguendo Get-Help -Name Get-IniContent -Full
:
Si noti che le parole chiave basate su commenti iniziano con a .
abbinare le sezioni dei risultati Get-Help
.
Guida agli script basata su commenti
<#
.SYNOPSIS
Reads a CSV file and filters it.
.DESCRIPTION
The ReadUsersCsv.ps1 script reads a CSV file and filters it on the 'UserName' column.
.PARAMETER Path
Specifies the path of the CSV input file.
.INPUTS
None. You cannot pipe objects to ReadUsersCsv.ps1.
.OUTPUTS
None. ReadUsersCsv.ps1 does not generate any output.
.EXAMPLE
C:\PS> .\ReadUsersCsv.ps1 -Path C:\Temp\Users.csv -UserName j.doe
#>
Param
(
[Parameter(Mandatory=$true,ValueFromPipeline=$false)]
[System.String]
$Path,
[Parameter(Mandatory=$true,ValueFromPipeline=$false)]
[System.String]
$UserName
)
Import-Csv -Path $Path | Where-Object -FilterScript {$_.UserName -eq $UserName}
La documentazione di script sopra può essere visualizzata eseguendo Get-Help -Name ReadUsersCsv.ps1 -Full
: