2016-11-15 13 views
1

左のフィールドから出てきた狂ったものを手に入れました。Powershellコンソールがスクリプトの失敗を引き起こす

分割が必要なベンダーアプリケーションによって生成されるPDFファイルがあります。私はiTextSharp.DLLを使用していますが、PowerShell ISEでのみ有効です。私はコンソールを介して同じスクリプトを実行しようとすると、それは壊れます。ここで

は、私はPowerShellのISEでこれを実行すると、私はPowerShellのコンソールでこれを実行すると、私は

2016-11-15T19:20:19 Runnning in ConsoleHost as MYDOMAIN\myuser 
2016-11-15T19:20:19 Opening PDF file 
2016-11-15T19:20:21 Outputting seperated PDF files 
2016-11-15T19:20:21 —- Exception Message: 
ErrorRecord : Method invocation failed because [iTextSharp.text.Rectangle] does not contain a method named 'Open'. 
を取得

2016-11-15T19:17:48 Runnning in Windows PowerShell ISE Host as MYDOMAIN\myuser 
2016-11-15T19:17:48 Opening PDF file 
2016-11-15T19:17:50 Outputting seperated PDF files 
2016-11-15T19:17:51 1 file(s) processed out of 3 

を取得するスクリプトのダウンカット部

Add-Type -Path ("MyDrive:\MyPath\itextsharp.dll"); 
$pdf = New-Object iTextSharp.text.pdf.PdfReader($sourcePDFFile); 
[iTextsharp.text.Document]$sourcePDF = $pdf.GetPageSizeWithRotation($fromPage); 
$sourcePDF.Open(); 

です

$ sourcePDF変数にGet-Memberの結果を出力すると、そのタイプはiTextsharp.text.Documenとして表示されますISEで動作しているときはt、コンソール経由で走っているときはiTextSharp.text.Rectangleです。

誰かが私に問題の原因と問題を解決するためのいくつかの指針を与えることができます。

乾杯 フィルは

+0

思いも寄らないしかし、おそらくあなたは別のDLLの読み込みをしています。しかしそれは確かに価値がある。 –

+0

'$ pdf'変数のタイプも検証する価値があります。私はすでに違っていると思います。 –

+0

私はLievenと同じように、上の例では異なるシェルアーキテクチャを実行していると思いますか? – Matt

答えて

0

感謝をアイデア。変数の作成方法を変更してこの問題を解決しました。代わりに

[iTextsharp.text.Document]$sourcePDF = $pdf.GetPageSizeWithRotation($fromPage);

$sourcePDF = New-Object iTextsharp.text.Document;

は... $ pdf.Getが判明新しいPDFを作成する必要はありません。

乾杯 フィル

0

私はこれが問題である疑いがある:PowerShellのISEが異なるアパートメント状態で実行されます。 ISEはSTAで動作します。ただし、コンソールはMTAで実行されます(バージョンによって異なります)。

あなたはとアパートの状態を確認することができます:STAモードでの使用で起動するPowerShellコンソールを強制的に

$host.Runspace.ApartmentState 

または

[System.Threading.Thread]::CurrentThread.GetApartmentState() 

:すべてのあなたのための

powershell.exe -sta 
+0

は、アパートメントモデルが同じ '2016-11-16T08あるようだ28:アパートの状態で38現在STA' ' 2016- ConsoleHostに走っ38 MYDOMAINは\ myUser'に '2016-11-16T08として11-16T08:24:42 MYDOMAIN \ myuserとしてのWindows PowerShell ISEホストでのランニング 2016-11-16T08:24:42現在のアパート状態STA' – philcart

関連する問題