スクリプト化されたタスクを使用してログオン時間を分析する
ログオン時間が長くなると、ユーザーの生産性が低下し、ユーザーエクスペリエンスが低下します。 管理者は、ログオン時間の詳細な概要を把握して、ログオンの速度が遅くなるプロセスを特定し、それに応じて是正措置を講じることができる場合があります。
この目標を達成するために、スクリプトAnalyze_Logon_Duration.ps1
を使用できます。 これは PowerShell スクリプトで、ログオンプロセスに関連するすべての主要なイベントをイベントログに照会します。 このスクリプトには、次のような利点があります。
- これにより、ユーザーの最新のログオンのログオン期間の内訳が表示されます。
- ログオンプロセスの主要な順次フェーズがすべて表示され、どのフェーズでログオンが遅くなっているかが簡単にわかります。
- これにより、あるフェーズの終了と次のフェーズの開始の間に遅延があるかどうかを確認できます。
その他の特典を確認するには、「https://www.controlup.com/script-library-posts/analyze-logon-duration/」を参照してください。
Workspace Environment Management (WEM) は、スクリプトの実行を自動化するスクリプト化されたタスク機能を提供します。 必要なのは、スクリプト化されたタスクを設定することだけです。 一般的なワークフローは次のとおりです。
- 関連するスクリプトを準備する
- スクリプトに署名し、スクリプトの署名を確認します。
- スクリプト化されたタスクを追加する
- スクリプト化されたタスクを設定する
- タスク実行レポートを表示する
関連するスクリプトを準備する
次の 2 つのスクリプトを含む ZIP ファイルを準備します。
-
Analyze_Logon_Duration-0531.ps1
. このスクリプトはhttps://www.controlup.com/script-library-posts/analyze-logon-duration/から入手できます。 -
Run_Analyze_Logon_Duration.ps1
. ログオン期間スクリプトにはドメイン名とユーザー名が必要なので、ドメイン名とユーザー名を渡すラッパー スクリプトを提供します。 たとえば、サービス アカウントのドメイン名とユーザー名を取得する方法を提供します。 ただし、このラッパー スクリプトには 1 つのユーザー セッションが必要です。
この例では、スクリプトRun_Analyze_Logon_Duration.ps1
には次の内容が含まれています。
$User = tasklist /v /FI "IMAGENAME eq explorer.exe" /FO list | find "User Name:"
$User = $User.Substring(14)
$UserName = $User.Split("\")[1]
$DomainName = "$env:userdomain\$UserName"
&.\AnalyzeLogonDuration.ps1 -DomainUser $DomainUser
<!--NeedCopy-->
スクリプトに署名する
スクリプト タスクはフル アクセスで実行する必要があります。 エントリ ポイント スクリプトの署名を追加する必要があります: RunAnalyzeLogonDuration.ps1
。 公式の証明書を使用することをお勧めします。 公式証明書をお持ちの場合は、次の 3 つの手順を省略できます。 証明書がない場合は、テストにのみ自己署名 SSL 証明書を使用できます。 自己署名 SSL 証明書は、通常は信頼できる SSL 証明書会社であるサードパーティの認証機関による検証がないため、リスクがあります。
たとえば、自己署名証明書を生成してインストールするには、次の手順を実行します。
-
PowerShell を管理者として開きます。 スタート ボタンを右クリックし、
Windows PowerShell (管理者)
またはWindows ターミナル (管理者)
を選択します。 コマンドを実行して証明書を作成します。 -
自己署名証明書を作成するには、
New-SelfSignedCertificate
コマンドレットを使用します。 証明書の名前 (フレンドリ名)、有効期間、使用方法 (KeyUsage) などのパラメータを指定します。
$cert = New-SelfSignedCertificate -Type CodeSigningCert -DnsName "MyTestCertificate.com" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(10) -KeyUsage DigitalSignature -FriendlyName "MyTestCertificate"
<!--NeedCopy-->
このコマンドは、有効期間が 1 年の新しい証明書を作成し、それに MyTestCertificateというラベルを付けます。 この証明書は、ローカル マシンの個人ストアに保存されます。
証明書が正常に作成されると、次の詳細が表示されます:
- 必要に応じて、秘密キーとともに証明書をエクスポートします。 署名に証明書を使用するには、証明書を秘密キーとともにエクスポートする必要があります。 これは、証明書を別のマシンで使用する場合、またはキーを保護する場合に不可欠です。
$pwd = ConvertTo-SecureString -String "YourStrongPassword" -Force -AsPlainText
Export-PfxCertificate -cert $cert -FilePath "C:\MyTestCertificate.pfx" -Password $pwd
<!--NeedCopy-->
YourStrongPassword を、任意の強力なパスワードに置き換えます。 このコマンドは、秘密キーを含む証明書を .pfx ファイルにエクスポートします。
- すでに証明書をエクスポートしていて、同じマシンまたは別のマシンにインストールする必要がある場合は、証明書ストアに再度インポートできます。 *.pfx ファイルをターゲット マシンにコピーし、
Import-PfxCertificate
コマンドレットを使用します。
$pwd = ConvertTo-SecureString -String "YourStrongPassword" -Force -AsPlainText
Import-PfxCertificate -FilePath "C:\MyTestCertificate.pfx" -CertStoreLocation "Cert:\LocalMachine\Root" -Password $pwd
<!--NeedCopy-->
- 証明書を使用して署名する: 公式証明書を使用する場合は、正しい CN 値を入力する必要があります。 この例では、
MyTestCertificate.com
を使用します。 証明書を見つけるには、$cert = ls Cert:\LocalMachine\Root| where {$_.subject -eq CN=MyTestCertificate.com"}
コマンドレットを使用します。
Set-AuthenticodeSignature
コマンドレットを使用して、PowerShell スクリプトまたはデジタル署名をサポートするその他のファイルに署名します。
Set-AuthenticodeSignature -FilePath "C:\logonDuration\RunLogOnduration.ps1" $cert -IncludeChain all -HashAlgorithm SHA1 -TimestampServer http://timestamp.digicert.com
<!--NeedCopy-->
このコマンドは、前に作成した証明書を使用して、 RunLogOnduration.ps1
にデジタル署名を適用します。
- 署名の確認: ファイルが正しく署名されていることを確認するには、次のコマンドを使用できます。
Get-AuthenticodeSignature -FilePath "C:\logonDuration\RunLogOnduration.ps1
<!--NeedCopy-->
スクリプトの署名が有効な場合、次の詳細が表示されます:
スクリプト化されたタスクを追加する
以下の情報は、「 スクリプト化されたタスクを追加する」のガイダンスを補足するものです。 ログオン時間を分析するタスクを作成するには、その記事の一般的なガイダンスに従い、以下の詳細を念頭に置いてください。
[Web コンソール] > [スクリプト化されたタスク] で、次のようにタスクを追加します。
-
[ ファイルタイプ] で [ ZIP] を選択します。
-
次の 2 つのスクリプトを含む zip ファイルを作成します。
AnalyzeLogonDuration.ps1
RunAnalyzeLogonDuration.ps1
-
zip ファイルを参照してアップロードし、スクリプト
RunAnalyzeLogonDuration.ps1
をエントリ ポイントとして設定します。 -
[ 権限の付与 ] オプションは、セキュリティ上のリスクをもたらす可能性がある、信頼できないスクリプトから発生する攻撃から保護するために、セキュリティレイヤーを追加するように設計されています。 Analyze_Logon_Duration タスクは、フルアクセスで実行する必要があります。
スクリプト化されたタスクを設定する
以下の情報は、「 スクリプトタスクの設定」のガイダンスを補足するものです。 Analyze_Logon_Duration タスクを構成するには、以下の詳細を念頭に置いて、その記事の一般的なガイダンスに従ってください。
-
関連する構成セットに移動し、[ スクリプトタスク設定] に移動し、[一般 ] で Analyze_Logon_Duration タスクを次のように設定します。
- WEM では、タスクを実行する前に署名を検証するかどうかを決定できます。 スクリプト化されたタスクにフルアクセス権が付与されている場合、署名の検証は必須です。 これにより、スクリプトが危険にさらされるのを防ぎ、セキュリティを確保します。 **フィルターとタスクのタイムアウト設定はオプションです** 。
-
「 トリガー」で、タスクのトリガーを設定します。
-
トリガーを使用して、タスクを実行するタイミングを制御します。 たとえば、「スケジュール済み」トリガーを作成してタスクの実行をスケジュールし、そのトリガーをタスクに関連付けることができます。
-
-
「 パラメータ」で、タスクにパラメータを渡すかどうかを選択します。 この例では、このステップをスキップできます。
-
「 出力」で、次のように設定を構成します。
タスク実行レポートを表示する
タスクが正常に実行されたら、レポートを確認して結果を表示できます。 詳細については、「 レポート」を参照してください。 この例では、次のレポートが表示されます。
フィルターを使用して、関連するレポートにビューを絞り込み、エクスポートできます。 レポートのエクスポートについては、「 レポートのエクスポート」を参照してください。 エクスポートされたデータに基づいて、さらに分析を行うことができます。
以下は、Power BI で関心のあるデータを視覚化する例です。 ユーザーのログオン期間の内訳が表示されます。
ヒント:
ログオンパフォーマンスの最適化は、Workspace Environment Management サービスのハイライトの 1 つです。 この機能により、ログオンプロセス全体を変更して、ログオン時間を大幅に短縮できます。 ログオンの最適化を参照してください。