PowerShell スクリプトから SQLCMD を呼び出そうとしていますが、Powershell は -InputFile を Invoke-Sqlcmd に渡す方法が気に入らないようです。私のコードは次のようになります。
$files = Get-ChildItem -Path $PSScriptRoot -Recurse | Where-Object { $_.Name -match $regex};
Invoke-Sqlcmd -InputFile $files[0].FullName
$files[0].FullName を出力すると "D:\foo\foo.sql" のような文字列が出力されるため、$files が空になることはありません。アプリケーションがこの行に到達すると、Invoke-Sqlcmd と "$files" の "$" の文字を使用したのと同じ行を指すエラーがスローされます。
次の 2 つのエラー メッセージが表示されます。
Invoke-Sqlcmd : The pipeline has been stopped.
+ CategoryInfo : InvalidOperation: (:) [Invoke-Sqlcmd], PipelineStoppedException
+ FullyQualifiedErrorId : SqlExectionError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand
Invoke-Sqlcmd : An expression of non-boolean type specified in a context where a condition is expected
+ CategoryInfo : InvalidOperation: (:) [Invoke-Sqlcmd], SqlPowerShellSqlExecutionException
+ FullyQualifiedErrorId : SqlError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand
実行したいスクリプトのファイルパスを供給する方法に問題はありますか? 正しい形式は何でしょう。.FullName の代わりに .PSPath を使用しようとしましたが、ファイル パスがサポートされていないというエラーが表示されます。