Извините, вы не можете.-Debug
- это общий параметр, поэтому -Debug
и -db
- это переключатели, которые доступны практически для всего, включая функции, которые вы пишете сами.Как говорит ошибка, она уже определена.
Даже если бы можно было обходить неопределенные встроенные псевдонимы, это неожиданно меняет значение вызова, например test-db -db
, для кого-то, кто часто использует * 1007.* вместо -Debug
.Они ожидают, что он разрешит вывод отладочной информации, а не определит другой параметр.
Рассмотрим эту функцию:
function test-db{
param(
[parameter(mandatory=$true)]
[string]$database)
write-host 'database' $database
write-debug 'debugging output'
}
Теперь вызовите ее с помощью test-db server
, test-db -db server
и test-db server -db
.Первый не делает write-debug
, в то время как другие 2 делают, независимо от того, где -db
.Вы также не можете определить отдельный параметр [string]$db
(или переименовать $database
в $db
), потому что Powershell выдаст вам эту ошибку:
Параметр 'db' не может быть указан, поскольку он конфликтуетс псевдонимом параметра с тем же именем для параметра «Отладка».
Подробнее об этом, по MSDN :
В дополнение к использованиюВ атрибуте AliasAttribute среда выполнения Windows PowerShell выполняет частичное сопоставление имен, даже если псевдонимы не указаны.Например, если ваш командлет имеет параметр FileName и это единственный параметр, начинающийся с F , пользователь может ввести Filename , Filenam , Файл , Fi или F и все еще распознает запись как параметр FileName .