我正在编写一个Powershell脚本,在其中我使用哈希表来存储有关数据库检查的信息。该表有5个键(主机,检查,上次执行时间,最后一个代表,状态),我想在我的表中搜索以下值:
$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。 return $ state,$ logpos,$ last_log_rotate }
答案 0 :(得分:2)
假设你有一个数组或哈希表列表(问题中不完全清楚),你的语法非常接近:
$s = $tables | where {($_.host -eq $hostname) -and ($_.check -eq $check)}