LoginSignup
0
0

システムコンテキストでのインストール中にユーザコンテキストでコマンドを実行する

Last updated at Posted at 2023-11-26

はじめに

IntuneでWin32アプリのインストールを行う場合、ユーザまたはシステムコンテキストのどちらかを選択します。大半のアプリは管理者権限でのインストールの為、システムコンテキストでの実行を選択すると思います。

インストールの途中にユーザコンテキストで実行したいコマンドがある場合に、何か対応方法がないか検索したところ、PSAppDeployToolkitで実行できることがわかりましたので、その方法を共有します。

一例として、インストールするかどうかをユーザに意向確認するとか、インストール中にファイルサーバにアクセスをして、何らかのパラメータファイルをコピーするようなケースです。(たぶんシステムアカウントではファイルサーバにはアクセスできない。。と思っています。)

実行方法

キーとなるのは以下のfunctionです。

Execute-ProcessAsUser

どうやら、タスクスケジューラにタスクとして実行コマンドを登録し、それを実行することで、ユーザコンテキストでのプロセス実行を行うようです。
なかなか面白い方法です。

実践編

では、実際にやってみます。

image.png

Filesの下には以下の2つのファイルを配置します。

image.png

checkuser.vbsは以下のような簡単なものです。インストールをするかどうか確認し、Yesなら0を、Noなら1を返します。

checkuser.vbs
x = Msgbox ("Install?", vbyesno , "InstallCheck")
If x = vbYes then
WScript.Quit(0)
ElseIf x = vbNo then
WScript.Quit(1)
End If

Deploy-Applicationの中に以下のコードを追加します。
-checkuser.vbsを誰でもアクセスできるフォルダにコピー(この例ではC:)
-ExecuteProcessAsUserを利用してスクリプトを実行します。(この例では、ログオンユーザで実行されます)
ユーザがNoを選択した場合には、exit code 1で終了します。Yesの場合にはそのまま継続し、後続のインストール処理を行います。

Deploy-Application.ps1
    ## <Perform Pre-Installation tasks here>
    Copy-File -Path "$dirFiles\checkuser.vbs" -Destination "c:\checkuser.vbs"
    $a=Execute-ProcessAsUser -Path "wscript.exe" -Parameters "c:\checkuser.vbs" -Wait -PassThru
    if ($a -eq 1 ) {
       Exit-Script -ExitCode 1
    }

それではテストしてみます。システムコンテキストで実行する為にpsexecを利用しましょう。

image.png

コマンドプロンプトを管理者権限で実行します。そして、以下のように実行します。

psexec -s <Deploy-Application.exeの絶対パス>

psexec経由でDeploy-applicationが実行されます。
そして、checkuser.vbsのダイアログが表示されました。
image.png

Deploy-Applicationは正しくシステムコンテキストで実行されています。

image.png

一方のcheckuer.vbsはログオンユーザで実行されています。
image.png

タスクスケジューラを開くと、psappdeploytoolkitが作成したタスクが確認できます、実行中になっています。
image.png

ログオンユーザで実行する設定になっていますね。
image.png

ちなみにこのタスクは実行終了後に削除されていました。

なかなか他ではできない便利な機能ですね、何かのお役に立てばと思います。

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0