2016-10-11 11 views
0

Windows Server 2008 R2の制限付きユーザー権限を持つRDP環境でテストしています。このスクリプトはSapien PowerShellスタジオを使用してPowerShell Forms V3(Win64)としてビルドされています。私は、これと、どのようにアプリケーションが各ユーザーのデスクトップに置かれているのかによって、プログラムをデバッグすることはできません。私はローカルでデバッグして実行することができ、すべてが100%正常に動作します。Powershellフォームがスクリプトの終わり近くで応答を停止する

私はテキストボックスからデータを取り出して、重要なビットすべてを処理するために関数に送ります。

GoTo_Runは、私が必要とするユーザーの資格情報を取得するGet_Credentialsに送信します。サーバーがループの処理に問題があると思っていたのですが、遅くなっていたので、一時停止して追いつくのを助けました。私はそれが事実であるとは思わない。 Explorer ++が実行されていない場合、資格情報が正しく認証されていないことを意味します。それが開かれている間、Exp ++が閉じられてから開いて、彼らが行ったことが記録されたことを彼らに伝えます。

エクスプローラ++が実行されている部分にコードが取得され、そこからコードが消滅する場所がわかりません。 Exp ++を終了すると、スクリプトの最後に最後のメッセージボックスが表示されず、重要なスクリプトの名前であるmyexe.exeが応答を停止しました。

https://www.sapien.com/forums/viewtopic.php?t=2339

https://www.sapien.com/blog/2011/07/15/primalforms-2011-creating-responsive-loops/

https://www.sapien.com/blog/2012/05/16/powershell-studio-creating-responsive-forms/

関連するコード:

$buttonENTER_Click = { 
    $newuser = $username.Text 
    $newpass = $password.Text 

    GoTo_Run $newpass $newuser 
} 

function GoTo_Run($newuser, $newpass) 
{ 
    Get_Credentials $newuser $newpass 
    Start-Sleep -Milliseconds 300 
    $exp = Get-Process Explorer++ -ErrorAction SilentlyContinue 

    if(-not $exp) 
    { 
     Start-Process '\\this\isthe\filepath' 
     Start-Process '\\this\isthe\filepatheroonie' 
    } 
    while (get-process | ?{ $_.path -eq "\\the\file\path\for\explorer++" }) 
    { 
     Start-Sleep -Milliseconds 1000 
    } 
    [System.Windows.Forms.MessageBox]::Show("Any Changes made have been recorded. If you have any issues or would like something added please email [email protected]", "Status") 
} 

答えて

1

あなたが持っている

は、私はすでに、これらのリンクでSAPIENフォーラムを通じて見えてきましたあなたのコードでは、.NETライン、[System.Windows.Forms.MessageBox]::Show("Any Changes made have been recorded. If you have any issues or would like something added please email [email protected]", "Status")
同時に、PowerShellのへのバインド、あなたが不足している.NET、[CmdletBinding()]

次今私はSAPIEN PowerShellのメーカーで多くの実務経験を持っていないが、私はバインディング.NETとの問題を抱えて覚えていますかPowerShell StudioでEXEに準拠するとき。

PowerShellのTranscriptまたはPowerShellイベントログを見ることなく、スクリプトの失敗/クラッシュが発生している場所であれば、私には驚かないでしょう。
PowerShellネイティブオプションについて考えましたか? $ErrorまたはStart-TranscriptとでPowerShellのV3 +(あなたのWMF 3.0?)あなたは、より多くの情報を表示する$Errorログを呼び出すことができますでも、スクリプトの先頭で$Error.Clear()を使用してtry { }; catch { }

、あなたはまだ獲得した後、援助が必要な場合はお知らせエラーログデータが組み込まれています。

幸運:)返信jaradscため

+0

おかげで、あなたは私はあなたがPowerShellのに結合.NETを追加することについては行くだろうか知っているだろうか? – Bridger

+0

こんにちはBridger、ここでこれについての良いレビューがあります。https://technet.microsoft.com/en-us/library/hh847872.aspxまた、Googleの場合はさらに多くのことがあります。しかしこれは、C#(.cs)のコードやファイルを呼び出す場合や、PowerShellで.NETリファレンスを使用する場合や、(x)AMLを使用する場合によくあります。 Windowsフォームメッセージボックスへの参照はWindows DLLを使用しているため、PowerShellにインポートする必要があります。その他のオプションは、メッセージボックスに 'New-Object -ComObject Wscript.Shell'のようなCOMオブジェクト参照を使用することです。 – jaradsc

関連する問題