SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

スタートアップスクリプトが完了するまでログインを待機させる

leave a comment

スタートアップスクリプトが完了するまでログインを待機させる荒い方法を。

はじめにグループポリシーで以下を設定しておきます。

  • コンピューターの構成→管理用テンプレート→システム→スクリプト→ログオン スクリプトを同期的に実行する : 有効
  • コンピューターの構成→管理用テンプレート→システム→グループ ポリシー→ログオン スクリプトの遅延を構成する : 有効 (0 分)

これで、ログオンスクリプトの実行が完了するまでデスクトップの表示を待機させることができるかと。

次に、スタートアップスクリプトの最後に以下のような処理を追加しておきます。

New-Item -ItemType File -Path C:\Scripts\progress.txt -Force | Out-Null

$aclrule = New-Object System.Security.AccessControl.FileSystemAccessRule @("Everyone", "FullControl", "Allow")
$acl = Get-Acl C:\Scripts\progress.txt 
$acl.AddAccessRule($aclrule)
Set-Acl C:\Scripts\progress.txt -AclObject $acl

 

これで、スタートアップスクリプトが終了するタイミングでフラグのファイルが作成されます。

次にログオンスクリプトとして以下のようなスクリプトを登録しておきます。

$count = 0
while (-not (Test-Path C:\Scripts\progress.txt) -and $count -lt 60){
    Start-Sleep -Seconds 1
    $count += 1
    $count 
}

Remove-Item C:\Scripts\import-progress.txt -Force

これで、スタートアップスクリプトが完了するか、60 秒経過するまでユーザーのログオンを待機させることができるかと。

スタートアップスクリプトはログオン後に実行されることもある (ログオン前に実行される保証がない) ため、ログオンスクリプトの同期実行を使用した荒い方法でした。

Written by masayuki.ozawa

9月 22nd, 2016 at 11:40 pm

Posted in Windows Client

Tagged with

Leave a Reply

*