Я думаю, что это может прояснить некоторые вещи для вас:
Function Start-Test1 {
[CmdletBinding()]
Param (
[Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName)]
[String[]]$Count,
[Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName )]
[String]$InlineCount
)
Process {
[PSCustomObject]@{
Count = $Count
InlineCount = $InlineCount
}
Write-Verbose "TEST1 ${$count} : ${$inlinecount}"
}
}
# No parameters, empty result
Start-Test1
# Only one parameter, output Count = 1
Start-Test1 -Count 1
# Only one parameter, output InlineCount = A
Start-Test1 -InlineCount A
# Two parameters, output Count = 1 InlineCount = A
Start-Test1 -Count 1 -InlineCount A
# Multiple input for Count
Start-Test1 -Count 1, 2, 3
Знак доллара используется только один раз в предложении Param
для каждого параметра. Это также облегчает чтение.
Определение позиций с помощью Position = 1
и т. Д. Требуется только тогда, когда параметры не в порядке. В этом случае они могут быть опущены. То же самое касается Mandatory = $false
, когда он опущен, PowerShell по умолчанию предполагает, что параметр не является обязательным. Но когда вы пишете Mandatory
, предполагается, что вы имеете в виду, что параметр является обязательным. Поэтому нет необходимости использовать логическое значение $true/$false
.
Если вы хотите принять несколько аргументов для одного параметра, вы можете использовать []
. Например, [String]$Name
принимает только одно имя, но [String[]]$Name
принимает несколько имен.
Несколько советов:
Некоторые замечания, всегда используйте правильное имя функции. Вы можете найти глаголы с помощью Get-Verb
. Это разрешенные глаголы, которые вы можете использовать.
Попробуйте вывести объект (array
, PSCustomObject
, HashTable
, ...), когда это возможно, а не просто Write-Host
, потому что это полезно только для визуализации вывода в консоли. Для этого лучше использовать Write-Verbose
. Затем вы можете запустить свою функцию с помощью Start-Test -Verbose
только в том случае, если вы хотите, чтобы на консоли отображалась дополнительная информация.