【发布时间】:2020-08-28 06:01:48
【问题描述】:
这是我第一次使用 Powershell,请原谅我的无知。
我有一个返回一堆订单号的 SQL 查询。我想检查另一个文件以查看该文件中是否存在与 SQL 查询返回的订单号同名的现有 PDF。
我的代码中的所有内容都可以正常工作,直到 ForEach 循环不返回任何内容。根据我的谷歌搜索,我认为我非常接近,但我不确定我做错了什么。任何帮助,将不胜感激。
出于显而易见的原因,我删除了实际的文件名,而且我知道该文件是正确的,并且其他命令确实可以访问它,所以我知道这不是我目前的问题。我还从 SQL 查询中删除了敏感信息。
$statement = "SELECT A, Date FROM XXXX
WHERE STAT = 1 AND Date >= trunc(sysdate)"
$con = New-Object System.Data.OracleClient.OracleConnection($connection_string)
$con.Open()
$cmd = $con.CreateCommand()
$cmd.CommandText = $statement
$result = $cmd.ExecuteReader()
$list = while ($result.Read()) { $result["A"]}
Write-Output $list
#########Loop through the list above here to check for matching PDF
ForEach ($Order in $list){
Get-ChildItem "\\xxxxxx\" -Filter $Order -File
#########If FALSE - notify that PDF is missing
}
$con.close()
我也尝试了以下代码,它让我更接近并实际上找到了我正在寻找的文件,但给出了错误
" Get-ChildItem : 找不到接受参数的位置参数
- CategoryInfo : InvalidArgument: (:) [Get-ChildItem], ParameterBindingException
- FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand"
ForEach ($Order in $list){
if((Get-ChildItem "\\xxxxx\" + $Order)){
Write-Output
} else { Write-Host "Does not exist."}
【问题讨论】:
-
请告诉我们
$list包含的内容。$list.GetType().FullName的输出是什么? -
$list 显示从我的 SQL 查询中提取的作业编号。示例:332E 598W 330E
标签: sql powershell foreach get-childitem