Get-Content -Raw参数错误

Sri*_*Sri 6 sql powershell

我有一个PowerShell脚本,它递归循环一个目录和子目录并运行其中的所有SQL文件,并在.log文件1中记录执行成功,1表示异常.PowerShell脚本执行它应该执行的操作,但在cmd窗口中,我看到此错误:

Get-Content:找不到与参数名称'Raw'匹配的参数

从这条线

$query = Get-Content -Path $_.FullName -Raw
Run Code Online (Sandbox Code Playgroud)

此语句在循环内运行,因此FullName每次迭代都会更改.这是我使用的版本.

Name             : Windows PowerShell ISE Host
Version          : 5.0.10586.117

示例脚本如下:

Get-ChildItem $ScriptFolder -Recurse -Exclude "*Archive*" -Filter *.sql |
  sort Directory |
  ForEach-Object { 
    $query = Get-Content -Path $_.FullName -Raw
    $result = SQLCMD -S $FullDBServer -E -I -Q $query -d $Database
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

wOx*_*xOm 6

-Raw参数Get-Content在PS3推出.

要在一个字符串中获取文件内容,有几种方法.

  • 适用于任何PS版本的最快方法:
    $text = [IO.File]::ReadAllText('c:\path\file.ext')
  • PS3 +的速度慢2倍:
    $text = Get-Content 'c:\path\file.ext' -Raw
  • PS2兼容的替代品慢100倍:
    $text = Get-Content 'c:\path\file.ext' | Out-String
  • 兼容PS2的30倍:
    $text = Get-Content 'c:\path\file.ext' -ReadCount 1000 | Out-String


jsc*_*ter 6

当 -path 参数实际上不是路径时,我在 ps v 5 中遇到过此错误。

尝试Write-Host $_.fullname在抛出错误的行上方添加,以确保$_.fullname实际上是您认为的那样。


Ans*_*ers 3

您使用的是 PowerShell v2 或更早版本。该参数-Raw是在 PowerShell v3 中引入的。升级 PowerShell 或通过管道传输Get-Contentthrough的输出Out-String

$query = Get-Content -Path $_.FullName | Out-String
Run Code Online (Sandbox Code Playgroud)

您还应该能够直接运行这些文件sqlcmd(即无需读取其内容并将其传递给命令):

$result = SQLCMD -S $FullDBServer -E -I -i $_.FullName -d $Database
Run Code Online (Sandbox Code Playgroud)