Следующий код воссоздает $array
.Следите за разницей в пустой строке ""
и $null
$a = $null
$b = ""
$c = "something"
$array = @($a, $b, $c)
$array = ForEach($element in $array){
If($element -eq $null){
"none"
}else{
$element
}
}
$array
Если вы хотите охватить как $null
, так и ""
, вы можете проверить это с помощью [string]::IsNullOrEmpty($element)
, как указали LotPings:
if([string]::IsNullOrEmpty($element)){
"none"
}else{
$element
}
Однако, если вы хотите обработать вложенные массивы, все немного усложняется, поскольку у powershell есть проблемы с возвратом одноэлементных массивов (вот небольшая хорошая статья об этом: Функции Powershell не делаютвозвращаем одноэлементные массивы )
Как говорится в статье, вам нужна дополнительная запятая напротив массива из одного элемента.Это будет выглядеть так:
$a = @()
$b = @()
$c = @("something")
$array = @($a,$b,$c)
$array = ForEach ($element in $array){
if ($element.count -eq 0){
,@("none")
}else{
,$element
}
}
$array
$array | ForEach-Object {$_.gettype()}