创建一个通过Powershell循环的函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建一个通过Powershell循环的函数相关的知识,希望对你有一定的参考价值。
我正在尝试创建一个循环遍历json文件的函数,并根据遇到的特定条件希望将json键的值添加到数组中,但无法完成此操作。
以下是json:
$a1 = [ {
"name": "sachin",
"surname": "",
},
{
"name": "Rajesh",
"surname": "Mehta"
}
]
和我创建的函数如下:
function addingkeyval
{
param ($key,
[Array]$tobeaddedarr)
$a1 | Select-Object -Property name,surname | ForEach-Object {
if($_.$key-eq "")
{
}
else
{
$tobeaddedarr +=$_.$key+","
}
}
}
当我使用以下语句校准此函数时:
$surnamearr = @()
addingkeyval -key surname -tobeaddedarr $surnamearr
i want the output in the array $surnamearr as below
("Mehta")
以某种方式我无法在数组中添加值,任何人都可以帮助我实现相同的目的
答案
如果只需要一个姓氏,可以这样做。
$a1 = '[
{
"name": "sachin",
"surname": "",
},
{
"name": "Rajesh",
"surname": "Mehta"
}
]'
$Json = $a1 | ConvertFrom-Json
$Surnames = $Json |
Where-Object { $null -ne $_.surname -and ![string]::IsNullOrEmpty($_.surname) } |
Select-Object -ExpandProperty surname
另一答案
$surnamearr = @((ConvertFrom-Json $a1).surname) -ne ''
[
ConvertFrom-Json $a1
将JSON数组转换为PowerShell自定义对象的数组(类型[pscustomobject]
)。[
(...).surname
使用.surname
提取结果数组中对象的所有member enumeration属性的值。@(...)
确保将结果视为数组(如果$a1
中的数组恰好只包含one元素,则不会)。[
-ne ''
从结果数组中过滤出所有空字符串元素(以LHS为数组,比较运算符,例如-ne
充当数组过滤器,而不是返回布尔值)。] >
结果是$surnamearr
是一个包含所有非空.surname
属性值的数组。
以上是关于创建一个通过Powershell循环的函数的主要内容,如果未能解决你的问题,请参考以下文章
如何使用引导程序和 for 循环在 django 中创建电影片段?