#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