Проверка параметров командлета PowerShell
-
20-09-2019 - |
Вопрос
Я пишу собственный командлет PowerShell и хотел бы знать, какой способ проверки параметра является правильным.
Я думал, что это можно сделать либо в методе доступа к набору свойств, либо во время выполнения командлета:
[Cmdlet(VerbsCommon.Add,"X")]
public class AddX : Cmdlet {
private string _name;
[Parameter(
Mandatory=false,
HelpMessage="The name of the X")]
public string name {
get {return _name;}
set {
// Should the parameter be validated in the set accessor?
if (_name.Contains(" ")) {
// call ThrowTerminatingError
}
_name = value;
}
}
protected override void ProcessRecord() {
// or in the ProcessRecord method?
if (_name.Contains(" ")) {
// call ThrowTerminatingError
}
}
}
Что такое «стандартный» подход?Установщик свойств, ProcessRecord или что-то совершенно другое?
Решение
Если возможно, желательно, чтобы параметры проверялись средой выполнения, указав Атрибуты проверки по определению параметра.
Windows PowerShell может проверять аргументы, передаваемые в параметры командлета, несколькими способами.Windows PowerShell может проверять длину, диапазон и шаблон символов аргумента.Он может проверить количество доступных аргументов (счетчик).
Не связан с StackOverflow