昇格されたコンテキストから現在のユーザーとして Powershell スクリプトを実行する方法は?

昇格されたコンテキストから現在のユーザーとして Powershell スクリプトを実行する方法は?

Azure ファイル共有をセットアップするために管理者の昇格を必要とする Powershell スクリプトがあります。最後のスクリプト コマンドは、ファイル共有をドライブ文字にマップするために使用します。新しいドライブ文字は Windows エクスプローラーからアクセスできるようになることを期待しています。昇格されたコンテキストから使用すると、そのコンテキストでのみドライブがマップされるため、ユーザー アカウントでは使用できないことはNew-PSDrive承知しています。New-PSDrive

昇格されたスクリプトから現在のユーザーとして Powershell スクリプト/プロセスを実行するにはどうすればよいですか?

答え1

ユーザーの資格情報を提供しなければ、ユーザーのコンテキストを変更することはできません。ログオンしているユーザーを簡単に取得できますが、ユーザーが入力しない限り、パスワードを取得することはできません。

Invoke-Command -FilePath "yourPath\yourScript.ps1" -ComputerName yourServer -Credential Get-Credential

次に、リモートで実行している場合、元のコンテキストでのみ実行できるため、ユーザーにはこれが表示されません。

PowerShell は Windows セキュリティ境界であるため、ネイティブではこれを実行できません。本当にこれを行う必要がある場合は、MS SysInternals PSExec の使用を検討してください。

または、スケジュールされたタスクで何かを実行するようにします。

答え2

私はデフォルトですべてを管理者として実行しているので、これについてはまったく間違った考えを持っていました。スクリプトを 2 つの別々のスクリプトに分割しました。1 つは管理者権限を必要とするコード用、もう 1 つはユーザー権限を必要とするコード用です。管理者コンテキストにあるかどうかをチェックしてエラーを出すユーザー権限スクリプトを呼び出します。次に、管理者スクリプトをユーザー スクリプトから独自の昇格されたプロンプトで実行し、待機するとユーザー コンテキストに戻ります。

関連情報