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")
}
おかげで、あなたは私はあなたがPowerShellのに結合.NETを追加することについては行くだろうか知っているだろうか? – Bridger
こんにちは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