2

こんにちは皆さん、私は PowerShell MTA (winForms を使用した GUI スクリプト) を持っています。これはうまく機能します。スクリプト名を「ENDUserMTA.ps1」にします。これは、特定のコマンドを呼び出し、管理者権限が本当に必要なことを行います。これは、手動またはタスクスケジューラを介して実行する場合、または[レジストリ] RunOnceまたはRunまたは管理者権限がある場合は何でも設定する場合に正常に機能します..

問題は、END ユーザーのラップトップでこのスクリプトを呼び出して、[インタラクティブに] 操作できるようにすることです。これまでに試したオプション:

  1. タスクマネージャーSYSTEMアカウントで「ENDUserMTA.ps1」をスケジュールしようとしました[タスクを実行するときに、次のユーザーアカウントを使用します]-これは開始し、NOT INTERACTIVEを実行します[システムアカウントにはインタラクティブセッションがないため]

  2. 管理者権限を持つ別のユーザー アカウントを使用して、タスク マネージャーで「ENDUserMTA.ps1」をスケジュールしようとしました [タスクの実行時に次のユーザー アカウントを使用] [タスクを実行するときは、次のユーザー アカウントを使用する] オプションで設定されたユーザーのみに表示されます。

私の状況では、PSSession または Delegated Remoting を作成できません。私は今、森の真ん中にいて、行き場がありません!!!

管理者権限なしでマシンにログインしたユーザーに対して、管理者としてスクリプトを呼び出す方法がわかりません..

正確に必要なものまたは同様の解決策:このスクリプトをスケジュールするとき、スクリプトがatlogon [任意のユーザー]を開始するようにスケジュールします。スクリプトが完了すると、スケジュールされたタスクが削除されます

助けてください..バラジ

4

1 に答える 1

0

Vista 以降、Microsoft はセキュリティ上の理由から UI スタックを分離し始めました。

あなたの問題に対する私のアドバイスは、2 つのスクリプトを作成するためにコードのアーキテクチャを変更することです。

  • UI のない最初のものは、管理者権限でスケジュールされます

  • UI を持つ 2 番目のものはユーザー権限で開始され、最初のもののクライアントになります。

2 つのスクリプト間でプロセス間通信を使用できますが、セキュリティ上の問題が発生します。サーバー部分でクライアント部分が接続できるようにするには、特定の ACL が必要です。

スクリプト間で通信する方法は他にもありますが、片側の非同期 UI アーキテクチャではそれほど簡単ではありません。マネージ コード (.NET コード) またはネイティブ コード (アンマネージ コード) を使用すると簡単です。私にとっては、PowerShell が .NET の上に構築されている限り、スクリプティングの容量が非常に大きくても、スクリプティングの場所の限界にあります。

于 2014-07-05T07:21:28.553 に答える