我一直在开展项目工作,以压缩和移动早于 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
答案 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'"