Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell,正在检查新表中的$null值_Powershell - Fatal编程技术网

Powershell,正在检查新表中的$null值

Powershell,正在检查新表中的$null值,powershell,Powershell,我创建了一个脚本来帮助我们清点机器。它非常成功,最后我创建了一个表,并将该对象导出为CSV 大量计算机有时不返回任何值(RPC服务不可用)。我如何检查是否返回了每个值?如果没有打开任何值,我想将这些机器添加到单独的列表中进行故障排除。什么是最有效的检查方法 $table = @{ Model= $PCInfo.Model IEVersion = $ie.sValue Serial = $Bios.SerialNumber Memory = $ram Department = $dp.Depar

我创建了一个脚本来帮助我们清点机器。它非常成功,最后我创建了一个表,并将该对象导出为CSV

大量计算机有时不返回任何值(RPC服务不可用)。我如何检查是否返回了每个值?如果没有打开任何值,我想将这些机器添加到单独的列表中进行故障排除。什么是最有效的检查方法

$table = @{
Model= $PCInfo.Model
IEVersion = $ie.sValue 
Serial = $Bios.SerialNumber
Memory = $ram
Department = $dp.Department
DriveFreeSpaceGB = $freespace
Manufacturer = $PCInfo.Manufacturer
OSName = $WinInfo.Caption
Computer = $computer
Uptime = $formattime
LastloggedinUser = $Uname.name
LastLoggedinDate = $loggedintime
LoggedOnDuringScan = $PCInfo.Username
ServicePack = $WinInfo.ServicePackMajorVersion
Online = $Online
    } 
New-Object PSObject -Property $table | Export-Csv C:\logs\ADInventory\ADInventory.csv -NoTypeInformation -Append
}

我猜您正在使用WMI等来填充那些“$PCinfo”类型的变量。由于我自己也经历了同样的练习,我建议您将它们转换为函数,并将逻辑构建到脚本的返回函数中,如:

Function Get-PcInfo {

  if ($SystemInfo = Get-WMIObject Win32_ComputerSystem) {
    return $SystemInfo.Model 
  }

  return $false  ##or use $null if you like
}
因此,现在您将有一些(或全部)散列“值”作为$false,您可以使用散列属性(如.values)检查$false

类似地,如果使用$null,则需要检查结果。一种方法是使用如下逻辑:

if ($hash.Values | ? {$_ -ne $null}) {"not null"} 
(一)
如果未打开任何值
。这可能意味着$table对象为null,您可以检查
$table
是否为null

if($table -eq $null){
#do something here
Write-host "your object is null"
}
else{
#export the objects to csv file
}

2)
RPC服务不可用
。如果您知道服务是问题所在,则可以检查服务是否正在运行或未使用wmi。

您可以将新对象分配给变量,然后检查空属性:

$pso = New-Object PSObject -Property $table
$pso.PSObject.Properties | Where-Object {$_.value -eq $null} 

当您不知道哪个属性可以为null时,您会怎么做?