gpt4 book ai didi

powershell - 在PowerShell脚本中返回解析函数

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

我正在尝试从PowerShell脚本中的功能之一解析响应,并且基于响应我必须做出一些决定。
该函数成功返回JSON对象,但无法解析该函数​​的响应。我需要检查有效节点数是否为0。

      [String[]] $NodeList = 'a1572dev00e001','a1572dev00q001'


$Response = Get-Nodes
Write-Output "Response $Response"
$JSRes = $Response | ConvertFrom-Json
Write-Output "Parsing response $JSRes"
#$Result = "success"

if($JSRes.ValidNodes.Count -gt 0)
{
Write-Output "$JSRes.ValidNodes"
$Result = "success"


}
else
{
Write-Output "All nodes are Invalid"
Write-Output "Invalid Nodes: $JSRes.Invalid"
$Result = "failed"
$ErrorMessage = "All nodes are Invalid"

}
Write-Output $Result


#Function
function Get-Nodes
{
$ValidNodes=@()
$InvalidNodes=@()

foreach($Node in $NodeList)
{
if(Get-ADComputer -filter {Name -eq $Node})
{
$ValidNodes +=$Node
}
else
{
$InvalidNodes +=$Node
}
}
$JRes = @{"ValidNodes"=$ValidNodes;"Invalid"=$InvalidNodes} | ConvertTo-Json -Compress
Write-Output $JRes
return $JRes
}
输出:
Response {"ValidNodes":["a1572dev00e001","a1572dev00q001"],"Invalid":[]} {"ValidNodes":["
a1572dev00e001","a1572dev00q001"],"Invalid":[]}
Parsing response
All nodes are Invalid
Invalid Nodes:
failed

最佳答案

一个问题是您输出$ Jres两次。

Write-Output $JRes 
return $JRes
这些有效地做同样的事情。接下来,当您似乎应该使用 ConvertFrom-String时使用 ConvertFrom-Json
$JSON = $Response | ConvertFrom-String
最后,您尝试输出仅存在于函数中的 $ValidNodes$InvalidNodes。将它们更改为 $JSON.ValidNodes$JSON.InvalidNodes另一个建议是参数化Nodelist,以便您可以将节点传递给函数。
#Function
function Get-Nodes
{
Param([string[]]$nodelist)
$ValidNodes=@()
$InvalidNodes=@()

foreach($Node in $NodeList)
{
if(Get-ADComputer -filter {Name -eq $Node})
{
$ValidNodes +=$Node
}
else
{
$InvalidNodes +=$Node
}
}
$JRes = @{"ValidNodes"=$ValidNodes;"Invalid"=$InvalidNodes} | ConvertTo-Json -Compress
$JRes
}

$Response = Get-Nodes a1572dev00e001,a1572dev00q001

Write-Output "Response $Response"
$JSON = $Response | ConvertFrom-Json
Write-Output "Parsing response $JSON"

if($JSON.ValidNodes.Count -gt 0)
{
Write-Output "Valid Nodes: $($JSON.ValidNodes)"
$Result = "success"

}
else
{
Write-Output "All nodes are Invalid"
Write-Output "Invalid Nodes: $($JSON.InValidNodes)"
$Result = "failed"
$ErrorMessage = "All nodes are Invalid"

}
Write-Output $Result

关于powershell - 在PowerShell脚本中返回解析函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64054499/

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