您如何正确记录 Powershell 函数?
How do you correctly document Powershell functions?
我是 Powershell 的新手,尽我所能发现它没有 Python 中的 PEP8/PEP484 之类的东西。我从 Posh Code 找到了 this document from Microsoft and this 第三方指南。我写了以下函数:
function Invoke-Authenticate {
[CmdletBinding()]
param (
[Parameter(Mandatory)]
[string]
# IP address of the OME server
$Ip,
[Parameter(Mandatory)]
# Credentials for the OME server
[pscredential] $Credentials
)
$SessionUrl = "https://$($IpAddress)/api/SessionService/Sessions"
$Type = "application/json"
$UserDetails = @{"UserName"=$Credentials.username;"Password"=$Credentials.GetNetworkCredential().password;
"SessionType"="API"} | ConvertTo-Json
$Headers = @{}
try {
$SessResponse = Invoke-WebRequest -Uri $SessionUrl -Method Post -Body $UserDetails -ContentType $Type `
-SkipCertificateCheck
if ($SessResponse.StatusCode -eq 200 -or $SessResponse.StatusCode -eq 201) {
# Successfully created a session - extract the auth token from the response
# header and update our headers for subsequent requests
$Headers."X-Auth-Token" = $SessResponse.Headers["X-Auth-Token"]
} else {
Write-Error "OME did not return a 200 or 201 status code. Received $($SessResponse.StatusCode).
We are unsure why this happened."
}
}
catch [Microsoft.PowerShell.Commands.HttpResponseException] {
Write-Error "There was a problem authenticating with OME. Are you sure you have the right username and password?"
return $null
}
catch [System.Net.Http.HttpRequestException] {
Write-Error "There was a problem connecting to OME. Are you sure you have the right IP and that it is available?"
return $null
}
return $Headers
<#
.SYNOPSIS
Authenticates with OME and creates a session
.DESCRIPTION
Authenticates with OME and creates a session
.PARAMETER Ip
IP address of the OME server
.PARAMETER Credentials
Credentials for the OME server
.INPUTS
None. You cannot pipe objects to Invoke-Authenticate.
.OUTPUTS
hashtable. The Invoke-Authenticate function returns a hashtable with the headers resulting from authentication
against the OME server
#>
}
据我所知,根据指南是正确的,但在我看来,最后的描述看起来很愚蠢。 Powershell 是否缺少我设置的编码风格指南,或者这是正确的吗?您是否应该只删除不适用于某个功能的字段?比如我没有.INPUTS
。我应该完全删除它吗?
它叫做“comment-based帮助”(about_Comment_Based_Help)
您有 3 个选项来放置文档:
• At the beginning of the function body.
• At the end of the function body.
• Before the function keyword. There cannot be more than one blank
line between the last line of the function help and the function
keyword.
因此,您可以轻松地将它们放在函数的顶部(内部或外部):
function Invoke-Authenticate {
<#
.SYNOPSIS
...
#>
或
<#
.SYNOPSIS
...
#>
function Invoke-Authenticate {
并非所有部分都是必需的,您可以只包含任何您想要的部分。这取决于您的 use-case 和公司准则。我通常至少包括 .SYSNOPSIS
、.DESCRIPTION
、.PARAMETERS
和 .EXAMPLES
。
我是 Powershell 的新手,尽我所能发现它没有 Python 中的 PEP8/PEP484 之类的东西。我从 Posh Code 找到了 this document from Microsoft and this 第三方指南。我写了以下函数:
function Invoke-Authenticate {
[CmdletBinding()]
param (
[Parameter(Mandatory)]
[string]
# IP address of the OME server
$Ip,
[Parameter(Mandatory)]
# Credentials for the OME server
[pscredential] $Credentials
)
$SessionUrl = "https://$($IpAddress)/api/SessionService/Sessions"
$Type = "application/json"
$UserDetails = @{"UserName"=$Credentials.username;"Password"=$Credentials.GetNetworkCredential().password;
"SessionType"="API"} | ConvertTo-Json
$Headers = @{}
try {
$SessResponse = Invoke-WebRequest -Uri $SessionUrl -Method Post -Body $UserDetails -ContentType $Type `
-SkipCertificateCheck
if ($SessResponse.StatusCode -eq 200 -or $SessResponse.StatusCode -eq 201) {
# Successfully created a session - extract the auth token from the response
# header and update our headers for subsequent requests
$Headers."X-Auth-Token" = $SessResponse.Headers["X-Auth-Token"]
} else {
Write-Error "OME did not return a 200 or 201 status code. Received $($SessResponse.StatusCode).
We are unsure why this happened."
}
}
catch [Microsoft.PowerShell.Commands.HttpResponseException] {
Write-Error "There was a problem authenticating with OME. Are you sure you have the right username and password?"
return $null
}
catch [System.Net.Http.HttpRequestException] {
Write-Error "There was a problem connecting to OME. Are you sure you have the right IP and that it is available?"
return $null
}
return $Headers
<#
.SYNOPSIS
Authenticates with OME and creates a session
.DESCRIPTION
Authenticates with OME and creates a session
.PARAMETER Ip
IP address of the OME server
.PARAMETER Credentials
Credentials for the OME server
.INPUTS
None. You cannot pipe objects to Invoke-Authenticate.
.OUTPUTS
hashtable. The Invoke-Authenticate function returns a hashtable with the headers resulting from authentication
against the OME server
#>
}
据我所知,根据指南是正确的,但在我看来,最后的描述看起来很愚蠢。 Powershell 是否缺少我设置的编码风格指南,或者这是正确的吗?您是否应该只删除不适用于某个功能的字段?比如我没有.INPUTS
。我应该完全删除它吗?
它叫做“comment-based帮助”(about_Comment_Based_Help)
您有 3 个选项来放置文档:
• At the beginning of the function body.
• At the end of the function body.
• Before the function keyword. There cannot be more than one blank line between the last line of the function help and the function keyword.
因此,您可以轻松地将它们放在函数的顶部(内部或外部):
function Invoke-Authenticate {
<#
.SYNOPSIS
...
#>
或
<#
.SYNOPSIS
...
#>
function Invoke-Authenticate {
并非所有部分都是必需的,您可以只包含任何您想要的部分。这取决于您的 use-case 和公司准则。我通常至少包括 .SYSNOPSIS
、.DESCRIPTION
、.PARAMETERS
和 .EXAMPLES
。