Проблемы с пониманием синтаксиса «Страницы справки» PowerShell

#powershell

#powershell

Вопрос:

Я надеюсь, что этот вопрос раньше не задавался, но у меня возникли проблемы с пониманием небольшой части синтаксиса справки PS. В документации Microsoft по этому вопросу указано, что необязательные параметры заключены в квадратные скобки «[]». В книге, которую я читаю (Learn Windows PowerShell in a Month of Lunches, 3-е изд.), говорится то же самое. Пример, приведенный в книге, состоит в том, чтобы запустить «Get-EventLog» без каких-либо параметров, и вы увидите, что LogName появится в виде подсказки. Однако, когда я смотрю на страницу справки для Get-EventLog, я вижу, что -LogName действительно заключено в квадратные скобки, что делает его необязательным. Мой вопрос в том, почему вы получаете приглашение для LogName, если оно изначально было необязательным? Какой шаг в логике я здесь упускаю? Является ли «необязательным» в этом смысле только ссылкой на акт буквального ввода «-LogName», а не на весь параметр (который будет включать строку) сам по себе?

Ответ №1:

Добро пожаловать на сайт. Разумный вопрос. Я думаю, что документация здесь охватывает это лучше, чем я мог.

Первым параметром в первом наборе параметров Get-EventLog является LogName. LogName заключено в квадратные скобки, что означает, что это позиционный параметр. Другими словами, указание имени самого параметра необязательно, если оно указано в правильной позиции.

По сути, это означает, что вы можете указать одно из имен журнала в качестве первого параметра в виде строки, и PowerShell будет знать, что первая позиция, Position[0], находится там, где ожидается -LogName параметр.

Итак, вы можете ввести это:

 Get-EventLog System
  

И вам не обязательно писать это так:

 Get-EventLog -LogName System