web-dev-qa-db-ja.com

特定のユーザーとしてリモートアプリケーションからPowerShellスクリプトを実行する方法

リモートWindowsマシンでPowerShellスクリプトを実行できるアプリケーションがあります。 PowerShellスクリプトを使用してネットワークドライブをマップしようとしています。同じスクリプトがエンドポイントで実行されると、スクリプトは正常に機能し、ネットワークドライブをマップできます。しかし、同じスクリプトがアプリケーションから実行された場合、ネットワークドライブのマッピングは完了しましたが、切断されたネットワークドライブとして行われました。

さて、私の観察:私のアプリケーションがNT Authority\Systemアカウントでスクリプトを実行していることがわかりました。このため、マップされたネットワークドライブは、切断されたドライブとして特定のユーザーに表示されます。私は正しいですか!!?

さて、問題:すべてのユーザーが利用できるネットワークドライブをマップするために何ができるでしょうか?または、PowerShellスクリプトを特定のユーザーとして実行して、ドライブがそのユーザーにのみマップされるようにすることはできますか?

とにかく、Start-ProcessInvoke-Commandを使用して、アプリケーションとは別のユーザーとしてPowerShellスクリプトを実行しようとしましたが、エラーがスローされ、run winrm quickconfigも機能しませんでした。

何か助けはありますか?感謝!!

2
Pydev

NT Authority\Systemからマップすると、ドライブは切断されたものとして表示されますが、機能するはずです: サービスが使用するネットワークドライブをマップする

注:新しく作成されたマップされたドライブは、このシステムのすべてのユーザーに表示されますが、「切断されたネットワークドライブ(Z :)」として表示されます。名前にだまされてはいけません。切断されていると主張する場合もありますが、すべての人に有効です。

さらに、NT Authority\Systemを使用してドライブをマッピングすることは、ネットワークドライブをすべてのユーザーが利用できるようにする唯一の(公式にはサポートされていませんが)方法です。

ドライブを特定のユーザーにマップする場合は、 PowerShellを別のユーザーとして実行する にする必要があります。ただし、そのユーザーの資格情報を取得する必要があることも意味します。

これはトークン操作を使用して軽減できますが、注意が必要です。 Invoke-TokenManipulation 関数を参照してください。これは、ImpersonateUserパラメーターです。

2
beatcracker