当前目录中找不到文件

时间:2018-07-25 10:25:30

标签: powershell

我有以下脚本:

@

我已将此功能作为模块安装。当我从例如桌面文件夹中调用命令时,如下所示:

SELECT
RES.[name], RES.[date], MIN(RES.[record]) AS [r1], MAX(RES.[record]) AS [r2]
FROM
(
SELECT
    K.[record]-dense_rank() over(partition by K.[name], K.[date] order by K.[record]) AS X, K.* 
FROM
TABLE K
) RES 
GROUP BY RES.[name], RES.[date], RES.X 

我收到以下错误(export.txt文件在桌面文件夹中):

function Export-sql-toExcel {
    [CmdletBinding()]
    Param (
        [string]$scriptFile,
        [string]$excelFile,
        [string]$serverInstance,
        [string]$database,
        [string]$userName,
        [string]$password
    )
    $tokens = ( [system.io.file]::ReadAllText( $scriptFile ) -split '(?:\bGO\b)' )
    foreach ($token in $tokens) {
        $token = $token.Trim()
        if ($token -ne "") {
            $lines = $token -split '\n'
            $title = $lines[0]
            if ($title.StartsWith("--")) {
                $title = $title.Substring(2)
                $title
            }
            Invoke-Sqlcmd -ServerInstance $serverInstance -Database $database -Username $userName -Password $password -Query $token  |
            Export-Excel -Path $excelFile -WorkSheetname $title -FreezeTopRow -ExcludeProperty RowError,RowState,Table,ItemArray,HasErrors
        }
    }

}

已编辑

如果我调试并尝试[system.environment] :: CurrentDirectory,它将返回 PS D:\Usuarios\mnieto\Desktop> Export-sql-toExcel -scriptFile .\EXPORT.txt -excelFile Excel.xlsx 那是因为我的脚本失败了。 NET功能和Powershell不共享“当前目录”

还有其他获取内容并解析$ scriptFile文件的方法吗?

3 个答案:

答案 0 :(得分:1)

我在这一行得到了通过powershell命令更改NET调用的解决方案

$content = Get-Content $scriptFile -Raw
$tokens = ( $content -split '(?:\bGO\b)' )

诀窍在-Raw参数中,因此文件被读取为单个字符串

答案 1 :(得分:1)

以我的经验,.dot NET函数不喜欢相对路径。

我会使用

$scriptfile = (Get-Item $Scriptfile).FullName

解析为前面函数中的完整路径:

$tokens = ( [system.io.file]::ReadAllText( $scriptFile ) -split '(?:\bGO\b)' )

答案 2 :(得分:0)

我也遇到同样的情况,当我添加点“”时,它已解决。调用csv

  

$ path2 = $ path +“。\ file.csv”

或在$ excelFile变量中检查空格。