我制作的 powershell 脚本有问题。该脚本的目的是从各种资源、CMDB og 和其他系统收集信息,并将它们收集在组合报告中并发送。
我一切都工作得很好,除了一个一直困扰我的声音。在我的脚本中,我对获得的信息进行了大量解析和修剪,在某些函数中我需要获取一些 XML 文件。例子:
$filter = "D:\WEC\Script\Rapportering\BigFixData\"
$xmlfiles = Get-ChildItem -path $filter -Filter "Bigfix_trimmed_JN.xml" -Recurse -Force |where {$_.psIsContainer -eq $false }
$xmlfile = $xmlfiles | ogv -OutputMode Single
Run Code Online (Sandbox Code Playgroud)
总是只有一个文件可供抓取,这就是为什么我使用“过滤器”选项并给出特定名称的原因。上面的代码将触发一个弹出窗口,要求我选择文件。除了文件选择器弹出窗口之外,它工作正常。我想摆脱它。
然后我将代码更改为:
$filter = "D:\WEC\Script\Rapportering\BigFixData\"
$xmlfiles = Get-ChildItem -path $filter -Filter "Bigfix_trimmed_JN.xml" | Select-Object -First 1 |where {$_.psIsContainer -eq $false }
Run Code Online (Sandbox Code Playgroud)
这不再显示弹出窗口,但似乎没有选择文件。导致脚本稍后出现引用对象错误,因为它为空。
该脚本大约有 1000 行,我已将错误范围缩小到上面的命令。
谁能帮我弄清楚我做错了什么?
提前致谢
您的第二个命令缺少开关-Recurse
,这可能可以解释为什么您没有得到任何结果。
虽然目录不太可能与特定的过滤器模式匹配,但限制仅"Bigfix_trimmed_JN.xml"
在 PSv3+ 中匹配文件的更简洁、更快速的方法是使用开关(作为补充,还有一个开关)。-File
-Directory
$xmlfile = Get-ChildItem $filter -Filter Bigfix_trimmed_JN.xml -Recurse -File |
Select-Object -First 1
Run Code Online (Sandbox Code Playgroud)
您应该添加检查以查看是否没有返回文件。
归档时间: |
|
查看次数: |
1748 次 |
最近记录: |