为什么我在空值表达式上出错?

时间:2018-03-16 22:38:46

标签: powershell

我对shell shell脚本很新。我正在尝试编写一个脚本,它将更新数百台戴尔计算机的BIOS。但我遇到了这两个错误的问题:

builder.Entity<AccountUser>()
    .HasOne(a => a.UserPermissionGroup)
    .WithOne().OnDelete(DeleteBehavior.Restrict);

Get-WmiObject : Invalid namespace "root\DCIM\SYSMAN"
At C:\Users\xxx\Desktop\Bios Updates Test.ps1:4 char:17
+ ... SVersion = (Get-WmiObject -Namespace root\DCIM\SYSMAN -Class DCIM_BIO ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-WmiObject], ManagementException
    + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

我的代码是:

You cannot call a method on a null-valued expression.
At C:\Users\xxx\Desktop\Bios Updates Test.ps1:12 char:5
+  if($BIOSVersion.CompareTo($BIOSUpdateFileVersion) -eq 0)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

2 个答案:

答案 0 :(得分:1)

此Dell网站介绍了如何测试以查看是否已安装OMCI。

http://en.community.dell.com/techcenter/systems-management/w/wiki/4573.omci-from-command-line

PS C:\src\t> wmic /namespace:\\root\dcim\sysman path __namespace
Node - CC0xxxxxx
ERROR:
Description = Invalid namespace

您是否需要深入了解DELL OMCI命名空间?以下是否有用?

PS C:\src\t> Get-WmiObject -Namespace 'root\CIMV2' -Class CIM_BIOSElement

SMBIOSBIOSVersion : 68ICE Ver. F.42
Manufacturer      : Hewlett-Packard
Name              : Default System BIOS
SerialNumber      : 5CB3310PDF
Version           : HPQOEM - f

而且,鉴于CIM是未来:

PS C:\src\t> Get-CimInstance -ClassName CIM_BIOSElement

SMBIOSBIOSVersion : 68ICE Ver. F.42
Manufacturer      : Hewlett-Packard
Name              : Default System BIOS
SerialNumber      : 5CB3310PDF
Version           : HPQOEM - f

答案 1 :(得分:0)

  

为什么我在空值表达式上出错?

错误消息显示<script src="https://unpkg.com/vue"></script> <div id="app"></div>空值表达式的方法是You cannot call a method on a null-valued expression.。 Thas是,因为$BIOSVersion.CompareTo($BIOSUpdateFileVersion)是未分配的变量($BIOSVersion)。

为什么?如果您尝试分配变量,null会抛出错误,因为它无法找到命名空间。因此,为了修复第二个错误,你必须正确地分配变量,因此找到一个合适的命名空间和/或WMI类。