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

EDIT:それは重要しかし、ここで私はハッシュテーブルを作成するために使用する機能であるかを確認しないでください。

の$ saved_state_fileは、各チェックの実行のための1つのラインを持っているともでき

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] 
     } 
    } 
最後のログの回転と最後のログの位置に行があります。 1つのホストに対して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

関連する問題