Powershell空指针异常

时间:2016-07-15 15:14:12

标签: powershell wmi

我一直在开展项目工作,以压缩和移动早于 x 天的文件到档案文件夹。我在这里对脚本进行了改进:https://gallery.technet.microsoft.com/scriptcenter/PowerShell-Compress-Log-121e63b5以帮助我,但是我遇到了一个已经证明相当烦人的问题。

当我在我的机器上运行它时,利用本地目录,脚本按预期完成。但是,当我将网络文件路径传递给脚本时,Get-WmiObject查询开始返回null结果。

例如,这是一个有效的示例命令行:

powershell -executionpolicy remotesigned -File compress_and_move_files.ps1 c:\temp\ c:\temp\compress_test\ 14

当我移动到UNC路径时,我开始在WMIQuery.Compress()调用上获取空值表达式错误

powershell -executionpolicy remotesigned -File compress_and_move_files.ps1 \\server1\temp\ \\server1\temp\compress_test\ 14

这是完整的错误:

You cannot call a method on a null-valued expression.
At compress_and_move_files.ps1:14 char:23
+ If ($WMIQuery.Compress <<<< ()) {Write-Host "$FullName compressed successfull
y."-ForegroundColor Green}
    + CategoryInfo          : InvalidOperation: (Compress:String) [], RuntimeE
   xception
    + FullyQualifiedErrorId : InvokeMethodOnNull

1 个答案:

答案 0 :(得分:2)

该脚本尝试检索CIM_DataFile实例 - 无法通过WMI中的UNC路径访问的类。

更改脚本以定位远程计算机,然后使用本地文件系统路径:

$Server   = "server1"
$WMIFile  = "C:\temp\".Replace("\", "\\")
$WMIQuery = Get-WmiObject -Computer $Server -Query "SELECT * FROM CIM_DataFile WHERE Name='$WMIFileName'"