Home
2089 words
10 minutes
【PowerShell】Update-Helpコマンドでヘルプファイルを最新化する方法

最終更新:2025-03-30

概要#

Update-HelpはPowerShellのヘルプファイル(ドキュメント)を更新するためのコマンドレットである。PowerShellをインストールした直後や、新しいモジュールを追加した際には、最新のヘルプファイルが含まれていない場合があるため、このコマンドレットを使用して最新のドキュメントをダウンロードする必要がある。Update-Helpを実行することで、コマンドレットや関数の最新の使用方法、構文、例などを参照できるようになる。また、特定のモジュールのヘルプのみを更新したり、異なる言語のヘルプをダウンロードしたりする機能も備えている。

基本的な使い方#

すべてのモジュールのヘルプを更新する#

最も基本的な使い方は、すべての利用可能なモジュールのヘルプを更新することである。管理者権限で実行すると、すべてのユーザー向けにヘルプが更新される。

Update-Help

特定のモジュールのヘルプを更新する#

特定のモジュールのヘルプだけを更新することもできる。

Update-Help -Module Microsoft.PowerShell.Management

複数のモジュールのヘルプを更新する#

複数のモジュールを指定して、それらのヘルプを更新することも可能である。

Update-Help -Module Microsoft.PowerShell.Management, Microsoft.PowerShell.Utility

特定の言語のヘルプを更新する#

デフォルトではシステム言語のヘルプが更新されるが、UIカルチャを指定して特定の言語のヘルプを更新することができる。

Update-Help -UICulture ja-JP

応用的な使い方#

インターネットに接続していない環境での更新#

インターネットに接続していない環境でもヘルプを更新するために、インターネットに接続している環境で先にヘルプをダウンロードし、それを利用することができる。

# インターネットに接続している環境で実行
Save-Help -DestinationPath "C:\ヘルプ" -Module Microsoft.PowerShell.* -UICulture ja-JP, en-US

# インターネットに接続していない環境で実行
Update-Help -SourcePath "C:\ヘルプ" -Module Microsoft.PowerShell.* -UICulture ja-JP

強制的にヘルプを更新する#

デフォルトでは、24時間以内に更新したモジュールのヘルプは更新されない。強制的に更新するには-Forceパラメータを使用する。

Update-Help -Force

最新化状況を確認して更新する#

ヘルプが最新かどうかを確認し、必要に応じて更新するスクリプト例。

$modules = Get-Module -ListAvailable
foreach ($module in $modules) {
    try {
        $helpInfo = Get-Help -Name $module.Name -ErrorAction SilentlyContinue
        if ($helpInfo.Description -eq $null) {
            Write-Host "ヘルプがないため更新します: $($module.Name)" -ForegroundColor Yellow
            Update-Help -Module $module.Name -ErrorAction SilentlyContinue
        }
    } catch {
        Write-Host "エラー: $($module.Name) - $_" -ForegroundColor Red
    }
}

オフラインでのヘルプ更新(詳細設定)#

特定のモジュールおよび言語に対して、オフラインでのヘルプ更新を設定する高度な例。

# 指定したモジュールと言語のヘルプをダウンロード
$modules = @("Microsoft.PowerShell.Management", "Microsoft.PowerShell.Security")
$cultures = @("en-US", "ja-JP", "de-DE")
$savePath = "D:\PowerShell\OfflineHelp"

# 保存先ディレクトリを作成
if (-not (Test-Path $savePath)) {
    New-Item -Path $savePath -ItemType Directory -Force
}

# ヘルプをダウンロード
foreach ($culture in $cultures) {
    $culturePath = Join-Path $savePath $culture
    if (-not (Test-Path $culturePath)) {
        New-Item -Path $culturePath -ItemType Directory -Force
    }
    Save-Help -Module $modules -UICulture $culture -DestinationPath $culturePath -Force
}

# オフラインのヘルプを更新
foreach ($culture in $cultures) {
    $culturePath = Join-Path $savePath $culture
    Update-Help -Module $modules -UICulture $culture -SourcePath $culturePath -Force
}

ハンズオン:Update-Helpの実践#

以下はUpdate-Helpコマンドの実践例とその出力である。

  1. 基本的なヘルプの更新
# すべてのヘルプを更新
Update-Help -Verbose

出力例:

VERBOSE: Update-Help の操作を開始しています
VERBOSE: モジュール Microsoft.PowerShell.Utility のヘルプの更新...
VERBOSE: モジュール Microsoft.PowerShell.Management のヘルプの更新...
VERBOSE: モジュール Microsoft.PowerShell.Security のヘルプの更新...
VERBOSE: HelpInfoUri http://go.microsoft.com/fwlink/?LinkId=285760 からヘルプをダウンロードしています。
VERBOSE: ja-JP のヘルプ ファイルをダウンロードしています。
VERBOSE: ヘルプ ファイルのダウンロードが完了しました。モジュール Microsoft.PowerShell.Utility のヘルプ ファイルをインストールしています。
VERBOSE: HelpInfoUri http://go.microsoft.com/fwlink/?LinkId=285760 からヘルプをダウンロードしています。
...
VERBOSE: Update-Help の操作が完了しました
  1. 特定のモジュールのヘルプを更新
# PowerShell Coreモジュールのヘルプを更新
Update-Help -Module Microsoft.PowerShell.Core -Verbose

出力例:

VERBOSE: Update-Help の操作を開始しています
VERBOSE: モジュール Microsoft.PowerShell.Core のヘルプの更新...
VERBOSE: HelpInfoUri http://go.microsoft.com/fwlink/?LinkId=285759 からヘルプをダウンロードしています。
VERBOSE: ja-JP のヘルプ ファイルをダウンロードしています。
VERBOSE: ヘルプ ファイルのダウンロードが完了しました。モジュール Microsoft.PowerShell.Core のヘルプ ファイルをインストールしています。
VERBOSE: Update-Help の操作が完了しました
  1. エラー処理を使用したヘルプ更新
# エラーを表示せずにヘルプ更新を試みる
try {
    Update-Help -ErrorAction Stop
    Write-Host "ヘルプの更新に成功しました" -ForegroundColor Green
} catch {
    Write-Host "ヘルプの更新中にエラーが発生しました: $_" -ForegroundColor Red
    
    # インターネット接続を確認
    if (Test-Connection 8.8.8.8 -Count 1 -Quiet) {
        Write-Host "インターネット接続は利用可能です。別の問題が発生している可能性があります。" -ForegroundColor Yellow
    } else {
        Write-Host "インターネット接続がありません。ネットワーク設定を確認してください。" -ForegroundColor Yellow
    }
}

出力例(成功時):

ヘルプの更新に成功しました

出力例(失敗時):

ヘルプの更新中にエラーが発生しました: Update-Help: インターネット接続に問題があるか、既定の HelpInfoUri にアクセスできません。
インターネット接続がありません。ネットワーク設定を確認してください。
  1. ヘルプの保存と更新(オフライン環境用)
# 保存先フォルダを作成
$helpFolder = "C:\PowerShell\SavedHelp"
if (-not (Test-Path $helpFolder)) {
    New-Item -Path $helpFolder -ItemType Directory | Out-Null
}

# 選択したモジュールのヘルプを保存
$selectedModules = @("Microsoft.PowerShell.Core", "Microsoft.PowerShell.Security")
Save-Help -Module $selectedModules -DestinationPath $helpFolder -Force -Verbose

# 保存したヘルプを使用して更新
Update-Help -Module $selectedModules -SourcePath $helpFolder -Force -Verbose

出力例(Save-Help):

VERBOSE: Save-Help の操作を開始しています
VERBOSE: モジュール Microsoft.PowerShell.Core のヘルプの格納...
VERBOSE: HelpInfoUri http://go.microsoft.com/fwlink/?LinkId=285759 からヘルプをダウンロードしています。
VERBOSE: ja-JP のヘルプ ファイルをダウンロードしています。
VERBOSE: ヘルプ ファイルのダウンロードが完了しました。
VERBOSE: モジュール Microsoft.PowerShell.Security のヘルプの格納...
VERBOSE: HelpInfoUri http://go.microsoft.com/fwlink/?LinkId=285760 からヘルプをダウンロードしています。
VERBOSE: ja-JP のヘルプ ファイルをダウンロードしています。
VERBOSE: ヘルプ ファイルのダウンロードが完了しました。
VERBOSE: Save-Help の操作が完了しました

出力例(Update-Help):

VERBOSE: Update-Help の操作を開始しています
VERBOSE: モジュール Microsoft.PowerShell.Core のヘルプの更新...
VERBOSE: ソースパス C:\PowerShell\SavedHelp からヘルプをダウンロードしています。
VERBOSE: ja-JP のヘルプ ファイルをダウンロードしています。
VERBOSE: ヘルプ ファイルのダウンロードが完了しました。モジュール Microsoft.PowerShell.Core のヘルプ ファイルをインストールしています。
VERBOSE: モジュール Microsoft.PowerShell.Security のヘルプの更新...
VERBOSE: ソースパス C:\PowerShell\SavedHelp からヘルプをダウンロードしています。
VERBOSE: ja-JP のヘルプ ファイルをダウンロードしています。
VERBOSE: ヘルプ ファイルのダウンロードが完了しました。モジュール Microsoft.PowerShell.Security のヘルプ ファイルをインストールしています。
VERBOSE: Update-Help の操作が完了しました
  1. 複数言語のヘルプ更新
# 英語と日本語のヘルプを更新
Update-Help -UICulture en-US, ja-JP -Verbose

出力例:

VERBOSE: Update-Help の操作を開始しています
VERBOSE: モジュール Microsoft.PowerShell.Management のヘルプの更新...
VERBOSE: HelpInfoUri http://go.microsoft.com/fwlink/?LinkId=285760 からヘルプをダウンロードしています。
VERBOSE: en-US のヘルプ ファイルをダウンロードしています。
VERBOSE: ヘルプ ファイルのダウンロードが完了しました。モジュール Microsoft.PowerShell.Management のヘルプ ファイルをインストールしています。
VERBOSE: HelpInfoUri http://go.microsoft.com/fwlink/?LinkId=285760 からヘルプをダウンロードしています。
VERBOSE: ja-JP のヘルプ ファイルをダウンロードしています。
...
VERBOSE: Update-Help の操作が完了しました
  1. ヘルプ更新のスケジュール化(スクリプト例)
# ヘルプ更新を毎週日曜日の午前3時に実行するスケジュールタスクを作成
$action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-NoProfile -WindowStyle Hidden -Command "Update-Help -Force"'
$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Sunday -At 3am
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$task = New-ScheduledTask -Action $action -Trigger $trigger -Principal $principal -Description "PowerShellヘルプを週次で更新"

# スケジュールタスクを登録
Register-ScheduledTask -TaskName "UpdatePowerShellHelp" -InputObject $task

Write-Host "PowerShellヘルプの自動更新タスクが作成されました" -ForegroundColor Green

出力例:

TaskPath                                       TaskName                          State
--------                                       --------                          -----
\                                              UpdatePowerShellHelp              Ready

PowerShellヘルプの自動更新タスクが作成されました
  1. 現在利用可能なヘルプの状態確認
# インストール済みモジュールのヘルプ情報を取得
$modules = Get-Module -ListAvailable | Where-Object { $_.HelpInfoUri }
$results = @()

foreach ($module in $modules) {
    $helpInfo = Get-HelpVersion -Module $module.Name -ErrorAction SilentlyContinue
    
    if ($helpInfo) {
        $results += [PSCustomObject]@{
            ModuleName = $module.Name
            Version = $module.Version
            LastUpdated = $helpInfo.LastUpdate
            Status = if ($helpInfo.LastUpdate -lt (Get-Date).AddDays(-90)) { "古い" } else { "最新" }
        }
    } else {
        $results += [PSCustomObject]@{
            ModuleName = $module.Name
            Version = $module.Version
            LastUpdated = $null
            Status = "ヘルプなし"
        }
    }
}

$results | Format-Table -AutoSize

出力例:

ModuleName                      Version LastUpdated           Status
---------                      ------- -----------           ------
Microsoft.PowerShell.Archive    1.2.5  2024-02-15 10:23:45   最新
Microsoft.PowerShell.Core       7.3.0  2024-01-02 08:15:30   最新
Microsoft.PowerShell.Utility    7.3.0  2023-12-28 15:42:18   最新
PackageManagement              1.4.8.1  2023-09-10 09:30:22   古い
PowerShellGet                   2.2.5  2023-08-05 14:17:53   古い
PSReadLine                     2.2.6.0  null                  ヘルプなし

対応PowerShellバージョン#

Update-Helpコマンドレットは以下のPowerShellバージョンで利用可能である:

  • Windows PowerShell 3.0以降
  • PowerShell Core 6.0以降
  • PowerShell 7.0以降

PowerShell 2.0には組み込まれておらず、以下の環境でも使用できる:

  • Windows PowerShell (Windows 7 SP1/Server 2008 R2以降)
  • PowerShell Core (Linux、macOS、Windows)
  • PowerShell 7 (クロスプラットフォーム)

参考サイト#

【PowerShell】Update-Helpコマンドでヘルプファイルを最新化する方法
https://ss0832.github.io/posts/20250330_update-help-powershell/
Author
ss0832
Published at
2025-03-30