PowerShellの初期ロードに設定すると良い内容

設定ファイルの配置場所とファイル名

配置場所

通常

C:\Users\<ユーザー名>\Documents\PowerShell

OneDrive設定がある場合

C:\Users\<ユーザー名>\OneDrive\Documents\PowerShell

設定ファイル名

多少分類の境界線微妙なとこはあるが、以下の様な役割で分かれてそう

  • Microsoft.PowerShell_profile.ps1(※1):主にシェル操作に関する設定
  • powershell.config.json:PowerShell全体の処理に関わる設定

※1
これとは別にprofile.ps1も存在する。
これは同じ内容を定義するが、対象とする範囲が別になる。
Microsoft.PowerShell_profile.ps1は、PowerShellコンソールのみ範囲となる。
一方、profile.ps1はVSCodeなど別ホストからPowerShellが実行された場合も当内容が適用される。
(逆にMicrosoft.PowerShell_profile.ps1の内容は読込されない)
そのため、全環境共通にしたい場合は、profile.ps1を作成する方が良い。

設定しておくと便利な設定

Microsoft.PowerShell_profile.ps1

# ==== エンコード関連 ====
 
# コンソールの表示をUTF-8にする
# 設定確認方法:chcp
chcp 65001 > $null
 
# 標準入力の文字コードをUTF-8にする
# 設定確認方法:$InputEncoding.WebName
$InputEncoding  = [System.Text.Encoding]::UTF8
 
# 標準出力の文字コードをUTF-8にする
# 設定確認方法:$OutputEncoding.WebName
$OutputEncoding = [System.Text.Encoding]::UTF8
 
# ==== コンソール操作関連 ====
 
# Tabキーの補完動作設定
# 設定確認方法:Get-PSReadLineKeyHandler | Where-Object { $_.Key -eq "Tab" }
Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete
 
# 過去の履歴から予測候補を表示
# 設定確認方法:Get-PSReadLineOption | Select-Object PredictionSource
Set-PSReadLineOption -PredictionSource History
 
# 予測候補の表示形式の指定
# 設定確認方法:Get-PSReadLineOption | Select-Object PredictionViewStyle
Set-PSReadLineOption -PredictionViewStyle ListView

powershell.config.json

{
  "Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned",
  "POWERSHELL_TELEMETRY_OPTOUT": "1",
  "DisableImplicitWinCompat": true
}
  • Microsoft.PowerShell:ExecutionPolicy:明示的に指定
  • POWERSHELL_TELEMETRY_OPTOUT:MSに情報送るの停止
  • DisableImplicitWinCompat:PowerShellの古い互換機能を無効化

PowerShell実行時に覚えておくと便利な内容

PowerShellのインストール方法

以下のコマンドでインストールするのが楽である。
後は見慣れたインストーラが起動して、インストールできる。

winget install Microsoft.PowerShell

実行したら、ライセンス条件に同意するか聞かれるので、Yを選択すればよい。

PowerShellのアップデート方法

winget upgrade Microsoft.PowerShell

PowerShellのバージョン確認方法

$PSVersionTable.PSVersion

なお、PowerShellはv5まではpowershellが起動コマンドである。
しかし、v6以降はpwshが起動コマンドである。

インストールしているソフト一覧と名称確認方法

# 全量出したい場合
winget list

# 一部だけでも検索可能
winget list Power

# パイプしてgrep的に削る方法
winget list | Select-String Power

覚えておくと便利なコマンド

# コマンドの場所を見つける
Get-Command hoge

# ファイルダウンロード
irm "https://hoge.com" | iex

# カレントディレクトリのエクスローラを開く
ii .

# 環境変数の全量表示
Get-ChildItem Env:

# 環境変数の指定表示(例:PATH変数)
$env:PATH

PowerShellでコマンドが実行できない

事象

PowerShellからコマンドが実行できない

"C:\Program Files\OpenSSL-Win64\bin\openssl.exe" s_client -connect sts.amazonaws.com:443 -servername sts.amazonaws.com

原因

コール演算子(&)の付け忘れ

対応方法

頭に"& "を指定すれば良い

& "C:\Program Files\OpenSSL-Win64\bin\openssl.exe" s_client -connect sts.amazonaws.com:443 -servername sts.amazonaws.com

インターネットがIPv6で動いてなかった

環境構成

  • NTT西日本 フレッツ光ネクスト スーパーハイスピードタイプ隼
  • OCN 光 with フレッツ ファミリー・スーパーハイスピード 隼・西日本
  • NTT GE-ONU 第6世代(交換前は第5世代)
  • NEC Aterm 7200 D8BE(交換前は3600HP)

発端

この3か月位、よくネットがふん詰まりを起こしていた。
ネット自体はつながるのだが、動画とか再生ができない事態が頻発していた。
ルーターが調子悪く古かったので買い替えもしたが改善しなかった。
そこでONUをルーターを同時に再起動すると改善していた。
結果、ONU(10年利用)を交換することになった。
ただ、その原因追及をしている際、IPv6が動いていないことが分かった。(※1)

※1
Antigravityが調査してくれた
IPv6はNTTから払い出しされてたが、OCNで止められてた

IPv6対応で行ったこと

OCN現状確認

OCNにIPv6対応できているかを確認できるサイトが用意されている。

OCN | 接続環境確認

OCNではIPoE[IP over Ethernet]のことをIPv4 over IPv6と呼称している模様
IPoE(IPv4 over IPv6)とは | OCN

当サイトで確認した結果、IPv6が対応できていないという結果が表示された。

OCN契約確認

OCNの契約確認を行った。
確認方法は綺麗に確認方法を解説されているページがあった。

OCN IPoEインターネット接続機能の提供状況を確認したい | OCNお客さまサポート

結果、IPoEは未提供と表示されていること確認できた。

OCN契約変更

OCNにIPoEを利用させて欲しいという契約変更を行った。
こちらに関しては、無料で行える。
また、元の方式が使えなくなる訳ではなく、両方使える感じになる模様である。
加えて、最悪うまく動かない場合は、当契約を元に戻すこともできるとのこと。
なお、Web上から変更も行えるようである。
(私は質問したい事項がいくつかあったので電話で対応してもらった)
切り替えには3日程度かかるとのこと。
support.ocn.ne.jp

ルーター設定&確認

切替前はPPPoE接続になっている。
それをIPoE接続に変更する必要がある。

PPPoEルータでIPv6は未接続と表示されている

但し、ルーターが自動化設定でIPv6有効化するとなっている場合がある。

NEC Aterm 7200 D8BEもデフォルトで上記設定であった

そのため、OCNの契約変更が反映されると自動でIPv6接続に切り替わっていた。

OCNバーチャルコネクトモードに変わり、IPv6も利用可能になっていた

その他

速度・安定感

  • 速度はそんなに正直変わらないかもしれない。今まで400Mbps出ていたのが、変更後も同じ位なので。
  • 安定感は上がったかも。上記数値は良い時で、悪い時は100とか50とかなることあったが、あまりないかも。(但し、観測日数少ないだけかも)

機器として必要なもの

当対応を行うには、予め機器が対応している必要がある。
ルーターはOCNバーチャルコネクト対応ルーターでないといけない。 OCNバーチャルコネクト対応ルーター対応一覧 | NTT docomo Business ONUも対応している必要あると思うが、こちらは余程古いのでなければ問題なさそう。
(私が10年前使い続けてたのでも問題なかったので)

IPoEのデメリット

コールセンターの方に言われた内容としては、監視カメラ系が動かなくなるケースがあると言われていた。
なお、私はgoogle nest cam(多分第一世代)を利用しているが、問題なく動いている。
また、ルーターも対応していないといけないので、対応していない場合は買替する必要がある。
(プランにもよるが、ルーターはONUみたいに無償レンタルできないので)

Edgeのワークスペースを直接起動したい

行いたいこと

通常Edgeを起動する際、Edgeを開いて、更にワークスペースを選択して開かないといけない
これだと、使いたいワークスペースを開くのにワンテンポ遅くなる
なので、ショートカットでワークスペースを起動させたい

対応方法

現時点ではこれ位しかいい案思い浮かばず
guidについては後述

"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe --launch-workspace=workspaceのguid

ショートカット作成例


  • EdgeのBetaなど利用している場合は、そちらを指定すれば良い
  • workspaceのguid部分はダブルクォーテーション不要
  • ショートカット名はお好きな名前を付ければOK

欠点

  • 必ず新規ウインドウが開く(そのため、閉じる作業が別途必要)
  • workspaceのguidを見つけるのが面倒

workspaceのguidの見つけ方

  1. アドレスバーに edge:/sync-internals と入力
  2. Searchタブを選択
  3. workspaceと入力して検索ボタンをクリック
  4. 下側の8XXXXXXX-4XXXX-4XXX-4XXX-12XXXXXXXXXX形式のを一つずつ確認する
  5. titleにワークスペースの名前が付いているJSONを探す
  6. 見つけたJSONのguidをコピーしておく
  7. 上のコマンドのworkspaceのguidを置き換える

沢山あるので一つずつ見ていくしかない

補記事項

  • ワークスペースとワークスペース内のタブ情報が同一に並んでいる
  • タブ情報のparent guidでもOK
  • 見つけれない場合は、ワークスペース名を特徴的な名前に一度変えてみる

ショートカットの呼び出し方

私はPATHが通っているところにショートカットを配置している。
そうすることでWIn + R → ショートカット名とかで実行できる様になる。

e2aiというショートカットを実行

EIAM・CIAM

名称

  • EIAM[Enterprise Identity Access Management]:社内向けIAM
  • CIAM[Customer Identity Access Management]:顧客向けIAM

用途比較

| | EIAM(社内向けIAM) | CIAM(顧客向けIAM) | | :--- | :--- | :--- | | 対象ユーザー | 従業員、派遣社員、外部契約者、ビジネスパートナー | 一般消費者(B2C)、顧客企業のユーザー(B2B顧客) | | 主要な目的 | 業務効率化、内部不正防止、ガバナンス・統制の強化 | 顧客体験(UX)の向上、コンバージョン率向上、顧客データ統合 | | ユーザー規模とスケーラビリティ | 数百〜数万人(組織規模に依存)
増減は予測可能で緩やか(近年は合併、提携などで急増する場面増えたが…) | 数万〜数千万人以上
キャンペーンやメディア露出による突発的なスパイクへの対応が必須| | アイデンティティの信頼源 (Source of Truth) | 人事システム(HRM)、Active Directory / Entra ID など | ユーザー自身による登録(自己サインアップ)、CRM、CDP | | ライフサイクル管理 | 入社・異動・退職に基づくプロビジョニング / デプロビジョニングの厳密な自動化 | ユーザー主導の登録、eKYC(※1)、プロフィール更新、アカウント削除(退会・未使用判定) | | 主な認証プロトコル | SAML 2.0, OIDC, Kerberos, LDAP | OIDC, OAuth 2.0, FIDO2 (WebAuthn) | | 認証UI/UXの要件 | セキュリティ重視
厳格な多要素認証(MFA)を強制
認証失敗時の対応 | 摩擦(フリクション)の最小化
SNSログイン(ソーシャルログイン)、パスワードレス、生体認証
リスクベースでの追加認証| | 認可・アクセス制御 | ロールベース(RBAC)、属性ベース(ABAC)
最小権限の原則に基づく厳格な制御 | スコープベース、リソースベース
動的な同意管理に基づく限定的なアクセス認可| | セッション管理 | 長時間のセッション、または業務時間内に限定
即時一括サインアウト(Global Sign-Out)の重要性が高い | 短期〜長期の柔軟なセッション(デバイスの「ログイン状態を保持」など)
リスク検知による動的セッション切断 | | セキュリティ・脅威対策 | ゼロトラスト、社内ネットワーク境界防御、シャドーIT検知 | アカウント乗っ取り(ATO)、Credential Stuffing、ボットによる不正登録検知| | プライバシー・同意管理 | 企業のポリシーに基づきデータは企業が管理
同意取得は原則不要(就業規則等に依存)| GDPR、CCPA、個人情報保護法等への厳格な準拠
ユーザー自身による明示的な同意・オプトイン管理| | 主な提供ベンダー/ソリューション | Okta Workforce, MS Entra ID, Ping Identity (PingFederate), HENGE | Auth0 (Okta), MS Entra  External ID, Amazon Cognito, Firebase Authentication, Uni-ID Libra, ForgeRock |

※1 eKYC[electronic Know Your Customer]

オンライン上で身元確認手続きを完結させる仕組みのこと。

【主な方式】

  • 運転免許証やマイナンバーカードといった本人確認書類と、自身の顔(風貌)を撮影して送信する方式
  • マイナンバーカードの署名用電子証明書を使った公的個人認証サービス(JPKI)を利用する方式

法律・ガイドラインごとの要点

個人情報保護法

すべての業種に適用される基本法である。

  • ID管理において管理対象となる属性が個人情報に該当する場合、取得・利用・保管・削除に関して本人の同意や利用目的の明示が必要
  • 不正アクセスや漏洩防止のため、アクセス制御や認証の強化が推奨
  • ログ管理やアクセス履歴の記録・監査も義務付けられるケース有

NIST SP 8000-63

米国連邦政府の情報システムにアクセスするユーザー(職員、契約者、一般市民など)のIDの信頼性を確保するためNISAが策定した定義

  • IDプロビジョニングのライフサイクル管理(登録・認証・廃止)を定義
  • 多要素認証の導入を推奨し、パスワード、生体認証、ハードウェアトークンなどを組み合わせる
  • IDフェデレーションとSSOの技術要件を提示
  • ID保証レベルを定義し、リスクに応じた認証強度を設定
  • 監査証跡とコンプライアンス報告の自動化を推奨

GDPR

EU内の個人のプライバシーとデータ保護を強化し、個人データに関するルールを規定

  • データ主体の権利(アクセス権、訂正権、削除権)を尊重
  • データ最小化と目的限定し、必要最小限のID情報のみを収集・利用
  • 処理記録と監査対応

デジタル社会推進標準ガイドライン DS-511

デジタル庁が作成したガイドラインで、2025年9月に全面改訂された

  • マイナンバーカードなど身分証明書のICチップ活用により偽造対策を強化
  • 被害が増加しているリアルタイムフィッシングへの体制を重視してAAL(※2)を設定
  • システムのリスクアセスメントプロセスを大幅に簡易化して、適用を容易に

※2 AAL:Authenticator Assurance Level(当人認証保証レベル)
ログインしようとしている人が、本当に登録された本人かどうかを確かめるプロセスの強固さ(確実性)」を表す指標

参考文献

第1特集:今さら聞けないID管理より

Turso(SQL Liteベースの分散DB)

Software Design 2026年5月号で紹介されていた。 良さげな感じがしたので、備忘録がてら。

** 製品 turso.tech - MITライセンス - インストール利用は無料利用可能 - マネージドDBサービスTurso Cloudも展開、無料プラン有

** 特徴 - 軽量さと分散性を両立 - HTTPおよびWebSocket経由のリモートアクセス - WebAssemblyへの対応 - DBをGitのようにブランチ・マージできる機能 - レプリカによる同期機能 - ベクトル検索をサポート

wingetを実行するとアプリ一覧が表示される

事象

wingetを実行しようとした。
すると、なぜかどのアプリを選択するか?という一覧が出て何もできない。

原因

wingetのパスが、関係ないところを指定していた。

PS C:\Users\hoge> Get-Command winget | Select-Object -Property Path

Path
----
C:\Windows\system32\winget

一見良さげなパスを指していたが、想定とは全然異なった。
そのため、どこにアプリがあるか?と聞かれている状態だった。
何かの作業をしている中でwingetというファイルを作成してしまってた模様。
結果、winget.exeでなく、wingetというファイルを見つけてしまったようである。

対応方法

ファイルを削除すればよい。

PS C:\Users\hoge> Remove-Item -Path "C:\Windows\system32\winget" -Force
PS C:\Users\hoge> Get-Command winget | Select-Object -Property Path

Path
----
C:\Users\hoge\AppData\Local\Microsoft\WindowsApps\winget.exe

PS C:\Users\hoge> winget --version
v1.28.240