gpt4 book ai didi

powershell - 使用哈希表的多列输出

转载 作者:行者123 更新时间:2023-12-03 00:37:12 24 4
gpt4 key购买 nike

我正在尝试创建一个包含3列的哈希表。

 SERVER_NAME  PROCESS_NAME  SERVER_STATUS   PROCESS_AVAILABLE
SERVER1 app1.exe RUNNING YES
SERVER1 app2.exe RUNNING NO
SERVER2 app1.exe OFFLINE NO
SERVER2 app2.exe OFFLINE NO
SERVER3 app1.exe RUNNING YES
SERVER3 app2.exe RUNNING YES

到目前为止,我已经尝试过了
$SERVERLIST = Get-Content "$PSScriptRoot\servers\serverManager.bin"
$PROCESSMONITOR = Get-Content "$PSScriptRoot\process\application.bin"

$testList = @{Name=$SERVERLIST;Process=$PROCESSMONITOR}

服务器列表位于“serverManager.bin”文件中。这是一个CSV文件,其中包含服务器列表。

我有兴趣监视的进程列表在“application.bin”文件中。这是一个CSV文件,其中包含应用程序列表(如PowerShell所示)。 [请参见下面的代码]
 Get-Process -ComputerName $server -name $process -ErrorAction SilentlyContinue

我想构建一个报告,从我们希望监视的列表中告诉管理员哪个服务器正在运行,哪个进程正在运行。

我可以检查进程是否正在运行
我可以检查服务器是否在线

我的问题是我需要做些什么才能获得上面发布的内容

最佳答案

尽管哈希表在此答案中起着重要作用,但您实际上根本不是在寻找哈希表。看about_hash_tables

A hash table, also known as a dictionary or associative array, is a compact data structure that stores one or more key/value pairs.



尽管您可以将任何内容嵌套到值中,但实际上并不是在寻找哈希表。我认为您想要的是一个自定义PowerShell对象,其中包含每个查询的结果。
Get-Process确实接受 -Computer-Name的数组,但是如果计算机不存在或进程不存在,它们将忽略结果。由于需要这些信息,因此需要为每个计算机/进程对运行一个cmdlet。

我仅使用哈希表来创建每个单独的“行”,该行将转换为PowerShell对象并作为数组收集。我不想混淆,但我知道至少可以在2.0下使用,这就是为什么我要这样做。

$SERVERLIST | ForEach-Object{
$computer = $_
$PROCESSMONITOR | ForEach-Object{
$process = $_
$props = @{
Server_Name = $computer
Process_Name = $process
}

# Check if the computer is alive. Better this was if $processes is large
If(Test-Connection $computer -Quiet -Count 1){
$props.Server_Status = "Running"
$result = Get-Process -Name $process -ComputerName $computer -ErrorAction SilentlyContinue
If($result){
$props.Process_Available = "Yes"
} else {
$props.Process_Available = "No"
}
} else {
$props.Server_Status = "Offline"
$props.Process_Available = "No"
}

New-Object -TypeName psobject -Property $props
}
} | Select Server_Name,Process_Name,Server_Status,Process_Available

因此,既然我们有了一个合适的对象,您现在就可以使用其他cmdlet,例如 Where-ObjectSort-Object等。

关于powershell - 使用哈希表的多列输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32460286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com