将文件路径参数传递给函数

时间:2018-07-18 12:48:40

标签: powershell

以下提到的代码给出了错误,并且我无法解决问题。谁能帮忙,我们只是将SourceFile和DestinationFile位置传递给此函数...

ProcessDocumentsData "D:\Files\Scan1.doc","D:\Files\Scan1.csv"

Clear-Host
function ProcessDocumentsData {
    Param(
        [string]$SourceFile,
        [string]$DestinationFile
    )

    $DestinationFileName = $DestinationFile
    $SourceFileName = $SourceFile
    $tableNum = 13

    $delimiter = ','
    $objWord = New-Object -Com Word.Application
    $objWord.Visible = $false # $false
    $objDocument = $objWord.Documents.Open($SourceFileName)
    $LETable = $objDocument.Tables.Item($tableNum)
    $LETableCols = $LETable.Columns.Count
    $LETableRows = $LETable.Rows.Count

    $RawCSV = for($r=1; $r -le $LETableRows; $r++) {
        $content= @()
        for($c=1; $c -le $LETableCols; $c++) {
            #Write-Host ("R:{0},C:{1}" -f $r,$c)
            $content += ("`"{0}`"" -f $LETable.Cell($r,$c).Range.Text -replace "(`r|`n|`t)|$([char]7)?")
        }
        $Content -join $delimiter
    }
    $Csv = $RawCSV | ConvertFrom-Csv
    $objDocument.Close()
    $objWord.Quit()
    # Stop Winword Process
    $rc = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($objWord)
    $Csv
    $Csv | Export-Csv $DestinationFileName -NoTypeInformation
}

我遇到以下错误:

ProcessDocumentsData "D:\Files\Scan1.doc","D:\Files\Scan1.csv"

Command failed
At line:7 char:1
+ $objDocument = $objWord.Documents.Open($filename)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException

You cannot call a method on a null-valued expression.
At line:8 char:1
+ $LETable = $objDocument.Tables.Item($tableNum)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
At line:21 char:1
+ $objDocument.Close()
+ ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException

1 个答案:

答案 0 :(得分:2)

在PowerShell中,调用函数时,多个参数由空格分隔。

尝试这样调用该函数:

ProcessDocumentsData "D:\Files\Scan1.doc" "D:\Files\Scan1.csv"