2015-10-29 3 views
0

Я уже много часов ловил около Get-WebConfiguration командлет в Web-Administration безрезультатно. Источник MSDN для него не объясняет то, что параметр -Metadata принимает как вход. Я бег этой команды в сценарии развертывания:Как получить дополнительную информацию о командлетах powershell?

Set-WebConfiguration -PSPath IIS:\ -Filter /system.webServer/security/authentication/windowsAuthentication -Metadata overrideMode -value Allow

Я занимаюсь разработкой библиотеки, который читает эти значения и пользователь оповещения, если их окружение не соответствует спецификации, так что я пытаюсь использовать :

Get-WebConfiguration -PSPath IIS:\ -Filter /system.webServer/security/authentication/windowsAuthentication -Metadata overrideMode

Но я получаю сообщение об ошибке: A positional parameter cannot be found that accepts argument 'overrideMode'.

Я буквально просто установить этот точный параметр, используя именно этот SY ntax!

Как узнать дополнительную информацию о параметрах в powershell? Есть ли для этого командлет или я просто неправильно использую Get-WebConfiguration?

ответ

2

Определенная ошибка, вызванная тем, что параметр -Metadata является коммутатором - он не принимает никаких аргументов.

При указании переключателя -Metadata возвращенный объект содержит свойство Metadata.

Чтобы получить значение overrideMode сделать:

(Get-WebConfiguration -Filter "/node/filter" -Metadata).Metadata.overrideMode 

Обретение Command детали:

(я использую Test-Path в качестве примера, но это будет работать для любого командлета)

Вы всегда можете получить основную информацию о cmdlet синтаксис из Get-Command -Syntax:

PS C:\> Get-Command Test-Path -Syntax 

Test-Path [-Path] <string[]> [-Filter <string>] [-Include <string[]>] [-Exclude <string[]>] [-PathType <TestPathType>] 
[-IsValid] [-Credential <pscredential>] [-UseTransaction] [-OlderThan <datetime>] [-NewerThan <datetime>] 
[<CommonParameters>] 

Test-Path -LiteralPath <string[]> [-Filter <string>] [-Include <string[]>] [-Exclude <string[]>] [-PathType 
<TestPathType>] [-IsValid] [-Credential <pscredential>] [-UseTransaction] [-OlderThan <datetime>] [-NewerThan 
<datetime>] [<CommonParameters>] 

Get-Command возвращает CommandInfo объект, и вы можете использовать это, чтобы проверить параметры в глубину.

В качестве примера, давайте посмотрим на Get-WebConfiguration -Metadata параметра:

PS C:\> (Get-Command Get-WebConfiguration).Parameters["Metadata"] 

Name   : Metadata 
ParameterType : System.Management.Automation.SwitchParameter 
ParameterSets : {[__AllParameterSets, System.Management.Automation.ParameterSetMetadata]} 
IsDynamic  : False 
Aliases   : {} 
Attributes  : {__AllParameterSets} 
SwitchParameter : True 

Здесь мы можем видеть, что -Metadata фактически переключатель (обратите внимание на SwitchParameter : True свойства)

Чтобы получить документации о командлете, вы всегда можете использовать командлет Get-Help, чтобы получить вывод perldoc/man-страницы о конкретном командлете. Поскольку документация только текст, вы можете трубы его more к шагу через него (опять же, так же, как страница руководства или perldoc):

# Get a basic summary 
Get-Help Test-Path 

# Get more comprehensive summary 
Get-Help Test-Path -Detailed 

# Get the full documentation including examples 
Get-Help Test-Path -Full 

# Get just the examples 
Get-Help Test-Path -Examples 

# Get the help section about a specific parameter 
Get-Help Test-Path -Parameter Path 
+0

Это отличный пост ресурс, однако ресурсы и командлеты не имеют информацию, которую я пытаюсь открыть (допустимые значения для метаданных или что не так с командлетом, который я использую).У вас есть другие ресурсы, которые могли бы привести меня дальше? –

+0

@CBauer Если вы посмотрите на результат Get-Command Get-WebConfiguration -Syntax, вы увидите, что параметр «MetaData» не принимает никаких аргументов - это переключатель. Вот почему вы получаете ошибку, PowerShell не может привязать строку «overrideMode» к параметру «MetaData» –

+0

@CBauer обновленный ответ –

Смежные вопросы