Мы хотим проверить, существует ли журнал с определенным именем источника. Журнал создается следующим образом:Как проверить, существует ли журнал событий с определенным именем источника?
New-EventLog -LogName Application -Source "MyName"
Теперь мы хотим использовать функцию PowerShell, чтобы проверить, существует ли этот журнал. Рабочим раствором является следующее:
[System.Diagnostics.EventLog]::SourceExists("MyName") -eq $false
, который возвращает False, если журнал существует и имеет значение true, если это не так.
Как мы можем сделать этот код так, чтобы он использовал встроенные функции PowerShell вместо классов .NET? Мы попытались код из here:
$sourceExists = !(Get-EventLog -Log Application -Source "MyName")
но она возвращает GetEventLogNoEntriesFound
исключение.
Может кто-то помочь нам? Благодарю.
Одной из сильных сторон PowerShell является доступностью .Net классов. Почему это не вариант или вам просто интересно? 'Get-EventLog' не поможет, поскольку вы не можете возвращать записи, но источник все еще может существовать. – Matt
Я думаю, что лучше использовать только функции PowerShell. Я в основном хочу знать, как возвращенный список можно превратить в объект, который может быть нулевым или нет. Но Baybe функция SourceExists от .NET-класса - наш лучший выбор. –
Что-то вроде этого тогда? '[bool] (Get-EventLog -Log Application -Source" MyName "-ErrorAction SilentlyContinue)'. Возвращает true или false. Источник все еще может существовать, но не имеет связанных журналов. – Matt