2011-08-02 5 views
1

Powershell 스크립트를 작성 중이며 해시 테이블을 사용하여 데이터베이스 검사에 대한 정보를 저장하고 있습니다. 표는 5 키 (호스트, 확인, 마지막 실행 시간, 마지막으로 담당자, 상태)를 가지고 있는데 값을 내 테이블에서 검색 할 위치 :powershell의 해시 테이블에서 여러 키를 검색하는 방법

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

사람이 수행하는 방법 어떤 생각을 가지고 있습니까? 그리고 차이가 있다면 스크립트는 2.0 이상의 .NET 프레임 워크에 의존 할 수 없습니다.

Powershell 및 스크립팅에 익숙하지 않아서 매우 명확 할 수 있지만 여전히 답변을 찾지 못하는 것 같습니다. Google. 또한 누군가 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] 
     } 
    } 

$의 saved_state_file는 각 검사 실행에 대한 한 줄을 가지고 있으며, 또한 수 마지막 로그 회전 및 마지막 로그 위치에 대한 행을가집니다. 하나의 호스트에 대해 12 개의 검사가있을 수 있습니다.

특정 검사를 추출하고 특정 호스트에서 실행하며 lastexec_time, last_rep 및 status를 변경하려고합니다. 반환 $ 상태, $ logpos, $ last_log_rotate } 당신이 배열이나 해시 테이블의 목록 (문제에서 완전히 명확하지)가 가정

+0

이 경우 도움이 될 것입니다 해시 테이블을로드하는 데 사용하는 코드를 표시합니다. –

+1

상태 해시 테이블 (새 개체 psobject -property $ state)에서 PS 사용자 지정 개체의 배열을 만들 수 있어야하고 설정되어 있어야합니다. – mjolinor

+0

@mjolinor 어떻게 작동할까요? 그리고 해시 테이블을 사용할 방법이 없습니까? – Gisli

답변

2

, 당신의 구문은 꽤 가까이 :

$s = $tables | where {($_.host -eq $hostname) -and ($_.check -eq $check)} 
+0

@ Errinc Nicholson. 감사. 해시 테이블 배열이 있으며 완벽하게 작동합니다. 나는 그것을 이미 시도했다고 생각했다. – Gisli

관련 문제