【问题标题】:How doI use Powershell to take output from a SQL query and search another file for that output如何使用 Powershell 从 SQL 查询中获取输出并在另一个文件中搜索该输出
【发布时间】: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


【解决方案1】:

我从您的评论中得知$list 是一个订单号数组。 接下来,您要检查文件夹中是否有具有该名称的文件,对吗?

那么我建议你使用Test-Path 而不是Get-ChildItem

$folderToSearch = '\\servername\sharename\folder'
foreach ($Order in $list) {
    $fileToCheck = Join-Path -Path $folderToSearch -ChildPath ('{0}.pdf' -f $Order)
    if (Test-Path -Path $fileToCheck -PathType Leaf) {
        "File found: $fileToCheck"
    }
    else {
        "File $fileToCheck does not exist"
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多