SSISからパラメータ化されたPSスクリプトを実行する方法について、さまざまな研究を行ってきました。パラメータ化されたスクリプトを実行する際に問題が発生しています。 SSISによるパラメータ化powershellスクリプト実行プロセスタスク(UNCあり)
Param ([string]$filepath,[string]$filename)
$Path = $filepath
$InputFile = (Join-Path $Path $filename)
$Reader = New-Object System.IO.StreamReader($InputFile)
While (($Line = $Reader.ReadLine()) -ne $null) {
If ($Line -match 'FILE\|([^\|]+)') {
$OutputFile = "$($matches[1]).txt"
}
Add-Content (Join-Path $Path $OutputFile) $Line
}
は、プロセス・タスクを実行するSSISで実行すると、私は次のように表現を経由して
Arguments
コマンドを構築しようとしています:PSスクリプトは、私はハードコードそれが期待通りに動作するスクリプトにパラメータがあれば、次のようになり
式を評価
"-ExecutionPolicy ByPass -File " + @[User::vPSScriptLocation] + " " + @[User::vFilePath]+ " "+ @[User::vFileName]
は以下を与える:実行されると
-ExecutionPolicy ByPass -File \\WorkDirectory\Script.ps1 \\transfer datafile.data
、タスクは失敗します。 .ps1というは、作業ディレクトリから削除し、SSISは、次のエラーコードを示しますされます。ここで、それはいけない、それは空の文字列を取得しているよう
Error: 0xC0029151 at Execute powershell script, Execute Process Task: In Executing "C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe" "-ExecutionPolicy ByPass -File \\WorkDirectory\Script.ps1 \\transfer datafile.data" at "", The process exit code was "-196608" while the expected was "0".
が見えますか?任意のポインタが高く評価されました。
だから、あなたのプロセスは、ファイル「\\転送の\ datafile.dataを読むことになっています"?これは有効なUNCパスではありません。エラーに示されているコードを実行するとスクリプトは機能しますか?また、すべての引数を1つの文字列として渡しているように見えますが、エラーがどのように記述されているかだけかもしれません。 '-File'がUNCをサポートしているかどうかをチェックする必要があります。 [この質問](http://stackoverflow.com/questions/35729192/ssis-powershell-script-execute)は、ファイルへのUNCパスを使用しようとしたときにエラーが発生しました。 – Matt
これは\\ WorkDirectory \ Script.ps1(これはUNCではありません)を読み込むことになっています。私もスピーチマークで引数を渡そうとしましたが、同じ結果を得る。 UNCでもかまいませんが、PS1ファイルを読み込み場所から削除するのは非常に奇妙な動作です。 – TJB
"\\ WorkDirectory \ Script.ps1"は有効なパスではないので、実行しようとしていることがわからないと思います。それは相対的な道なんかなんてことだろうか? PowerShellが探しているWorkDirectoryというサーバーがないと確信しています。同じ問題があなたのスクリプトの中で起こるはずです。これは、私があなたが似たようなパスを構築している場所を指し示す前に指摘しようとしていたものです。 – Matt