Как я могу использовать PARAM для нулевых переменных? - PullRequest
0 голосов
/ 19 июня 2019

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

Пример:

script.ps1 -consultlog Приложение -id 1003 -уровень 4 (ОК)
script.ps1 -Приложение consultlog - уровень 4 (Fail)

param($consultlog,$id,$level)
$event = Get-WinEvent -FilterHashtable @{
   LogName= $consultlog
   ID= $id
   Level= $level
   StartTime=(Get-Date).AddHours(-24)
} 
$event

1 Ответ

0 голосов
/ 19 июня 2019

_ [edit - версия, которую я первоначально опубликовал, использует .Where() для фильтрации пар ключ / значение ... и дал словарь вместо хеш-таблицы.]

вы можете добавить в скрипт тест для проверки входных данных $ Null.это скорее похоже на то, что можно сделать с разбрызгиванием [Get-Help about_Splatting].

param ($consultlog,$id,$level)

# there is almost certainly a more graceful way to do this [*sigh ...*] 
$FilterHT = @{}
if ($consultlog) {$FilterHT.Add('LogName', $consultlog)}
if ($id) {$FilterHT.Add('ID', $id)}
if ($level) {$FilterHT.Add('Level', $level)}
$FilterHT.Add('StartTime', (Get-Date).AddHours(-24))

$event = Get-WinEvent -FilterHashtable $FilterHT

$event

если вы называете это таким образом ...

$FileName.ps1 -consultlog security -id 4624

... эта версия фактически возвращает события.[ ухмылка ] обратите внимание, что он обработан, пропуская параметр -Level.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...