Как искать с несколькими ключами в хеш-таблице в powershell - PullRequest
1 голос
/ 02 августа 2011

Я пишу сценарий Powershell и в нем я использую хеш-таблицу для хранения информации о проверках базы данных.Таблица имеет 5 ключей (хост, проверка, время последнего выполнения, последнее повторение, статус), и я хочу найти в своей таблице значения, где:

$s = $table where $host -eq $hostname -and check -eq $check

Кто-нибудь знает, как это сделать?И если это что-то меняет, сценарий не может полагаться на .NET Framework выше 2.0

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

Gísli

РЕДАКТИРОВАТЬ: не понимаю, как это важно, но вот функция, которую я использую дляхеш-таблица:

function read_saved_state{
    $state = @{}
    $logpos = @{}
    $last_log_rotate = 0
    foreach($s in Get-Content $saved_state_file){
        $x = $s.split('|')
        if($x[0] -eq 'check'){
            $state.host = $x[1]
            $state.check = $x[2]
            $state.lastexec = $x[3]
            $state.lastrep = $x[4]
            $state.status = $x[5]
        }
        elseif($x[0] -eq 'lastrotate'){
            $last_log_rotate = $x[1]
        }
        elseif($x[0] -eq 'log'){
            $logpos.lastpos = $x[3]
        }
    }

$ сохраненный_стайл_файл содержит одну строку для каждого контрольного прогона, а также может содержать строку для последнего поворота журнала и последней позиции журнала.Для одного хоста может быть до 12 проверок.

Я пытаюсь извлечь конкретную проверку, запустить на определенном хосте и изменить lastexec_time, last_rep и status.вернуть $ state, $ logpos, $ last_log_rotate}

1 Ответ

2 голосов
/ 03 августа 2011

Если у вас есть массив или список хеш-таблиц (не совсем понятно из вопроса), ваш синтаксис довольно близок:

$s = $tables | where {($_.host -eq $hostname) -and ($_.check -eq $check)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...