くらめその情シス:Intuneのスクリプトを使用してローカルAdministratorユーザーを有効化する

2020.07.22

はじめに

こんにちは。くらめそ情シスの畠山です。

皆さんの会社では、WindowsPCが不調な時、どのような方法で対応されていますでしょうか。

Active Directoryを使用していて、オフィス内で皆さんが作業している場合は、ドメイン管理者が走って行ってドメイン管理者ユーザーでログインして各種設定を見たり、修正したりしているのではないでしょうか。

クラスメソッドでは、かなりのメンバが、在宅だったり、他の拠点で作業しているため、ドメイン管理者がユーザーところまで走っていくことができません。

そこで、通常では無効化されている、ローカルのAdministratorユーザを有効化して、一時的に管理者権限を使用して、状況確認や設定変更をリモートで対応しています。

なお、Administratorのパスワードは、予め個々のPCに違うパスワードを設定してお渡ししています。

これのメリットは、PCが不調な時にSlackでAdministratorのパスワードを一時的に開示してログインしてもらい、不調の原因を探してリカバリーすることができるため、PCをその都度宅急便等で送ったり、送り返すためのタイムロスをかなり減らすことが可能です。

もちろん、ゼロにすることはできませんが、かなり有効な手段となっています。

【この記事の目的】

  • Intuneスクリプトを使用して、PowerShellコマンドで記述した様々なコマンドを、実行できることをお伝えする
  • Intune登録時に、WindowsPCでのみ有効なスクリプトを使用して、ローカルのAdministratorユーザーの有効化を自動化する
  • 起動時にローカルAdministratorのパスワードをセットするツールを起動する

では、さっそく設定手順をご紹介していきます。

【ご注意ください】

このシリーズでは以下の条件を満たしAzureを既に利用できていることが前提になっています。

  • Office365などでAzureでライセンス管理が利用可能であること
  • AzureADにユーザー、グループ情報があること(AzureAD Connector連携含む)
  • Azureのグローバル管理者アカウントの権限を持っていること

パワーシェル(PowerShell)コマンドファイルの作成

IntuneのWindows用スクリプト機能は、全てパワーシェル(PowerShell)コマンドで記述する必要があります。 また、パワーシェル(PowerShell)ファイルの拡張子は「.ps1」となっています。

PowerShell ISE(パワーシェルのエディタ)の起動とコード入力

PowerShell ISEを起動したら、以下のコマンド行を入力します。

net user Administrator /active:yes  /logonpasswordchg:no

入力したら、名前をつけて保存します。拡張子は.ps1になります。

Intuneにスクリプトを登録

作成した、PowerShellコマンドファイルを、Intuneに登録していきます。

Microsoft Endpoint Manager admin centerを開きます。 デバイス|スクリプト を開きます。

「+追加」をクリックします。 macOSか、Windows10のプラットフォーム選択が出ますので、Windows10を選択します。

PowerShell スクリプトの追加(基本)

このスクリプトに、名前をつけます。 説明には、スクリプトの目的や機能を記載しておくと、メンテナンス時の運用がしやすくなります。

PowerShell スクリプトの追加(スクリプト設定)

ここで、先ほど作成したPowerShellコマンドファイル(拡張子.ps1)を指定して、動作環境を設定します。

【注意点】

  • 「このスクリプトをログオンしたユーザーの資格情報を使用して実行する」については、実行するコマンドに必要な権限によって変えてください。ここでは、管理者権限が必要なので、「いいえ」を選択します。
  • 「スクリプト署名チェックを強制」は基本的に、「いいえ」で大丈夫です。
  • 「64 ビットの PowerShell ホストでスクリプトを実行する」は、基本的に64ビットを使用しますので、「はい」を選択します。

PowerShell スクリプトの追加(割り当て)

このスクリプトを実行させる対象のPCが所属するグループを割り当てます。

【注意点】

  • 割り当てるグループは、グループメンバーがユーザーのグループです。メンバーがデバイスのグループではありませんので、ご注意ください。

PowerShell スクリプトの追加(レビューと保存)

割り当て先グループの設定を確認して、保存します。

これで、ローカルAdministratorをIntune起動時に自動的に有効化するスクリプトの登録は完了です。

ローカルAdministratorのパスワードをセットする

弊社では、ローカルAdministratorのパスワードは冒頭でお話しした通り、個々のPCに違うパスワードを設定していますので、今現在、自動設定は行っていません。
その代わりに、「lusrmgr」というローカルのユーザとグループの設定画面を表示して、Administratorのパスワード入力操作を簡略化しています。
これを、Intuneのスクリプトを使用して、PCの起動時に自動的に実行するスクリプトを設定します。

PowerShell ISE(パワーシェルのエディタ)の起動とコード入力

PowerShell ISE(パワーシェルのエディタ)の起動は、上記と同様ですので、割愛します。

以下のコードをエディタに入力します。

lusrmgr.msc

【注意】

このコマンドだけを、Intuneに登録した場合、スクリプトはIntuneサーバと同期する時に実行しますので、その都度表示されてしまいます。
そのため、ひと工夫して一度だけ実行されるようにレジストリに新たにキーを作成して、フラグを立てるようにします。
そのコードを付け加えたのが、以下です。

#ローカルユーザーとグループウィンドウ表示

#このスクリプトは管理者権限で実行される必要あり

#####実行済みかチェック

####HKCUユーザーのレジストリチェック

$AlreadyResult =  Get-ItemProperty HKCU:\Environment -name RunAlreadyAdminSetPass  -ErrorAction SilentlyContinue

if ( $AlreadyResult."RunAlreadyAdminSetPass" -eq "True"){
#if ( $AlreadyResult -ne $null ){
	exit 0
	}

####HKLMユーザーのレジストリチェック
$AlreadyResult =  Get-ItemProperty HKLM:\SOFTWARE\AAAAAAA -name RunAlreadyAdminSetPass  -ErrorAction SilentlyContinue

if ( $AlreadyResult."RunAlreadyAdminSetPass" -eq "True"){
#if ( $AlreadyResult -ne $null ){
	exit 0
	}

Start-Sleep 10

lusrmgr.msc

#####実行済みであることをレジストリに記録

Set-ItemProperty -Path HKCU:\Environment -Name RunAlreadyAdminSetPass -Value True
New-Item -Path HKLM:\SOFTWARE\AAAAAAA
Set-ItemProperty -Path HKLM:\SOFTWARE\AAAAAAA -Name RunAlreadyAdminSetPass -Value True

exit 0

このPowerShellコマンドファイルを保存します。

Intuneにスクリプトを登録

Intuneへの登録は、Administratorユーザーの有効化スクリプトの登録と同様の方法で可能です。

注意点として、lusrmgrコマンドは、ユーザー権限で動かす必要がありますので、「PowerShell スクリプトの追加(割り当て)」時に、「このスクリプトをログオンしたユーザーの資格情報を使用して実行する」のところは、「はい」を選択する必要があります。

さいごに

ローカルAdministratorユーザーの運用に関しましては、それぞれの企業によって様々な考え方や運用方法があるかと思います。

ここでは、Intuneのスクリプトを登録するためには、PowerShellで記述する必要がある点と、実行するコマンドの実行権限を適切に設定する必要があるということに注意していただき、様々なスクリプトを使用して、より柔軟なIntuneの運用が可能であるということをお伝えしました。

これらを活用して、Intuneを使用したPCの運用をどんどん自動化していきましょう。

また、これからも色々なIntuneに関連するTipsを公開していきます。