Вопрос по PowerShell noob здесь. У меня есть группы серверов, которые перечислены в отдельных списках. На каждом сервере есть журнал ошибок, который я проверяю на наличие определенных ошибок. Однако каждая группа серверов имеет свой уникальный набор ошибок, которые я сканирую, используя специальную строку поиска для этой группы серверов. В основном я делаю создание условия на основе имени списка серверов и сопоставление соответствующей строки поиска для этой группы серверов.
Примерно так:
$SERVER_LST_1 = "$pwd\servers\servers_1.lst"
$SERVER_LST_2 = "$pwd\servers\servers_2.lst"
$SERVER_LST_3 = "$pwd\servers\servers_3.lst"
$SEARCH_STR_1 = "Error text for server group 1"
$SEARCH_STR_2 = "Error text for server group 2"
$SEARCH_STR_3 = "Error text for server group 3"
$Servers1 = Get-Content $SERVER_LST_1
ForEach ($Server1 in $Servers1)
{
$StartupErrorLog1 = Get-ChildItem -Path \\$Server1\$LOG_PATH -Include StartupError.log -Recurse | Select-String -notmatch $SEARCH_STR_1
}
$Servers2 = Get-Content $SERVER_LST_2
ForEach ($Server2 in $Servers2)
{
$StartupErrorLog2 = Get-ChildItem -Path \\$Server2\$LOG_PATH -Include StartupError.log -Recurse | Select-String -notmatch $SEARCH_STR_2
}
$Servers3 = Get-Content $SERVER_LST_3
ForEach ($Server3 in $Servers3)
{
$StartupErrorLog3 = Get-ChildItem -Path \\$Server3\$LOG_PATH -Include StartupError.log -Recurse | Select-String -notmatch $SEARCH_STR_3
}
Я бы хотел сделать код более эффективным, не используя так много условий. Существует ли более чистый подход для сопоставления строк поиска с соответствующей группой серверов с использованием меньшего количества кода? Надеюсь, что это имеет смысл.