保守版、2026-09-01 確認。 2019 年の記事では、現在のユーザーの実行ポリシーを
Unrestrictedにして 1 台の PC を直しました。しかし通常、この変更は問題に対して広すぎます。以下では、プロファイルを読まずにシェルを復旧し、有効なポリシーと正確なプロファイルを確認し、Conda が予定する編集をレビューしたうえで、許可された範囲で最も狭い対処を選びます。末尾には、不可視の行末空白だけを正規化した完全な 2019 年エクスポートを保存します。
PowerShell が起動時に profile.ps1 をドットソースして PSSecurityException を出す場合、PowerShell の起動ポリシー層で失敗しています。それだけでは Conda、Python、環境の破損を示しません。ブロックされたプロファイル、Conda のインストール、対象環境を別々の層として扱います。
Table of Contents
1. ポリシーを変える前にエラーパスを読む
過去のエラーが示したパスは次です。
C:UsersuserDocumentsWindowsPowerShellprofile.ps1
これは Windows PowerShell のプロファイルです。PowerShell 7(pwsh.exe)、Windows PowerShell(powershell.exe)、Visual Studio Code、その他のホストでは異なるパスを使うことがあります。Microsoft は固定パスを仮定せず、実際に失敗するホストで $PROFILE 自動変数を読むよう案内しています。
実行ポリシーはプロファイルとスクリプトに対する Windows の安全機能ですが、完全なセキュリティ境界ではありません。問うべきは「どう無効化するか」ではなく、「どのスコープが有効か、どのファイルが止められ、そのファイルは信頼できるか」です。
2. プロファイルを読まずにクリーンなシェルを開く
コマンドプロンプト、[ファイル名を指定して実行]、または信頼できる Conda prompt から、同じ種類の PowerShell をプロファイルなしで起動します。
powershell.exe -NoProfile
pwsh.exe -NoProfile
使用するホストに対応する片方だけを実行します。-NoProfile は復旧モードであり、壊れた起動ファイルを読みませんが、ファイルも実行ポリシーも変更しません。どちらからも conda が見つからない場合、以下の Conda コマンドは、その配布物がインストールした Anaconda/Miniconda/Miniforge prompt で実行します。
エラーを消すためだけにプロファイルを削除しないでください。無関係な設定が含まれる可能性があり、失敗したホストとパスも重要な証拠です。
3. ホスト、プロファイル、コマンド、ポリシーを記録する
クリーンな PowerShell セッションで次を保存します。
$PSVersionTable.PSVersion
$PSHOME
$PROFILE | Select-Object *
Get-ExecutionPolicy
Get-ExecutionPolicy -List
Get-Command conda -All -ErrorAction SilentlyContinue
スコープなしの Get-ExecutionPolicy は有効なポリシーを示します。-List は MachinePolicy、UserPolicy、Process、CurrentUser、LocalMachine を表示します。グループポリシーのスコープはローカル設定より優先されるため、Set-ExecutionPolicy が成功しても有効な値が変わらない場合があります。
記憶した既定値ではなく、実出力で診断します。Microsoft は複数の既定・有効値の組み合わせを説明しており、組織が意図的にプロファイルを禁止している場合もあります。
4. 正確なプロファイルと Conda の変更を調べる
実行する前に、現在のホストのプロファイルをテキストとして読みます。
if (Test-Path -LiteralPath $PROFILE -PathType Leaf) {
Get-Item -LiteralPath $PROFILE
Get-Content -LiteralPath $PROFILE
}
Conda 初期化ブロックは意図したインストール先を指す必要があります。ブロック外のコマンドも確認します。Conda を直すことが、無関係なプロファイルの処理を暗黙に許可する理由にはなりません。
意図した conda が使える prompt で、現在のバージョンが予定する変更をプレビューします。
conda --version
conda init powershell --dry-run --verbose
Conda は --dry-run を表示のみと定義しています。プレビューを既存プロファイルと比較し、インストールパスを確認します。別のユーザー、PC、Conda リリースから初期化ブロックをコピーしないでください。
5. 許可された範囲で最小の対処を選ぶ
| 状況 | 対処 | 境界 |
|---|---|---|
MachinePolicy または UserPolicy が定義済み | 組織のポリシーに従うか管理者に相談 | CurrentUser、Process、Bypass、コピーしたコードでグループポリシーを回避しない。 |
個人管理の Windows、ローカルプロファイル確認済み、Restricted | CurrentUser の RemoteSigned を検討 | このユーザーに持続するが PC 全体には及ばない。実行前のレビューは必要。 |
RemoteSigned が確認済みのダウンロードファイル 1 個を止める | そのファイルだけを検証し、Internet ゾーン印を外す | ディレクトリを再帰的に解除せず、「署名あり」を「無害」と同一視しない。 |
| ポリシーを変更できない | 信頼できる Conda prompt と conda run を使う | PowerShell の自動 activate は行わず、コマンドごとに環境を明示。 |
| 古い、または不要な Conda ブロックがある | conda init --reverse powershell をプレビューして実行 | Conda 初期化だけを除去し、他のプロファイルコードは直さない。 |
個人管理の PC でプロファイル確認後なら、通常は次の限定的な設定をアーカイブの Unrestricted の代わりに検討します。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Get-ExecutionPolicy
Get-ExecutionPolicy -List
RemoteSigned はローカル作成スクリプトを許可し、ダウンロードされたスクリプトには署名を要求します。明示的に解除されたファイルは例外です。Conda 初期化だけのために永続的な Unrestricted や Bypass を設定しないでください。組織では AllSigned が正しい場合があり、本記事はそれを弱めません。
6. 検証したダウンロードファイル 1 個だけを解除する
有効なポリシーがすでに RemoteSigned で、エラーが Internet ゾーン印を持つ特定の信頼済みファイルを示す場合だけ使います。プレースホルダーを PowerShell が報告した正確なパスに置き換えます。
$blockedPath = 'C:pathreportedbytheerror.ps1'
Get-AuthenticodeSignature -LiteralPath $blockedPath |
Format-List Status, StatusMessage, SignerCertificate
Get-Item -LiteralPath $blockedPath -Stream *
Unblock-File -LiteralPath $blockedPath -WhatIf
発行元と入手元、内容、意図したインストール内のパスであることを確認します。すべて確認できた場合だけ実行します。
Unblock-File -LiteralPath $blockedPath
Microsoft によれば Unblock-File は Zone.Identifier ストリームを削除します。これは信頼の判断であり、汎用的なエラー消去ではありません。Downloads、Conda 全体、プロファイルツリーを再帰的に解除しないでください。
7. バックアップ、初期化、再起動、検証
Conda が空でないプロファイルを編集する前に、隣へタイムスタンプ付きバックアップを作ります。
if (Test-Path -LiteralPath $PROFILE -PathType Leaf) {
$stamp = Get-Date -Format 'yyyyMMdd-HHmmss'
Copy-Item -LiteralPath $PROFILE -Destination "$PROFILE.$stamp.bak"
}
conda init powershell --dry-run --verbose
conda init powershell
その PowerShell ホストの全ウィンドウを閉じ、新しく起動します。Conda は conda init 後、多くのシェルで再起動が必要と説明しています。コマンド、環境、インタープリターを検証します。
conda --version
conda info --envs
conda activate PROJECT_ENV
python -c "import sys; print(sys.executable); print(sys.version)"
conda deactivate
PROJECT_ENV は対象環境名へ置換します。prompt の接頭辞だけでは合格ではなく、sys.executable が期待する prefix 内を指す必要があります。
8. PowerShell を永続初期化せずに処理を実行する
自動 activate は必須ではありません。信頼できる Conda prompt から conda run を使うと、PowerShell プロファイルを読まず、指定環境で 1 コマンドを実行できます。
conda run --name PROJECT_ENV --no-capture-output -- python .script.py
Conda はこの境界に --name/--prefix、--cwd、--no-capture-output を用意しています。スケジュールタスクや再現可能な自動化では、対話プロファイルへの依存より明示実行が明快です。プロセスは呼び出し元のファイル、ネットワーク権限、認証情報を継承します。Conda 環境は依存関係の分離であり、セキュリティサンドボックスではありません。
9. Conda のプロファイル編集を戻す
サポートされた逆操作を先にプレビューします。
conda init --reverse powershell --dry-run --verbose
conda init --reverse powershell
シェルを再起動し、再度 $PROFILE を確認します。無関係な内容が変わった場合や、結果が記録したプレビューと異なる場合、停止してタイムスタンプ付きバックアップと比較し、盲目的に上書きしません。
本記事で CurrentUser ポリシーを変え、その設定が不要になった場合、現在の一覧を記録してから、そのスコープだけを削除します。
Get-ExecutionPolicy -List
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Get-ExecutionPolicy -List
Undefined はそのスコープの設定を削除します。以後の有効ポリシーは次に適用されるスコープから決まり、Restricted など特定値になる保証はありません。
10. 観測した層ごとに切り分ける
| 観測 | 主な原因 | 次に集める証拠 |
|---|---|---|
起動時の PSSecurityException が profile.ps1 を示す | 有効ポリシーがそのホストのプロファイルを阻止 | $PROFILE、Get-ExecutionPolicy -List、内容 |
CurrentUser 設定は成功したが有効値が変わらない | 優先度の高いグループポリシー | MachinePolicy、UserPolicy、管理者の指針 |
-NoProfile のときだけ conda がない | プロファイルが関数または PATH を提供 | 信頼できる Conda prompt と Get-Command conda -All |
conda activate が shell 未設定と言う | 初期化がない、戻された、別ホストへ適用 | ホスト実行ファイル、$PROFILE、conda init ... --dry-run --verbose |
| 初期化パスが古いインストールを指す | 再インストール・移動後の古いブロック | Get-Command conda、プレビュー、バックアップの比較 |
| Conda は activate したが Python が違う | 別環境または隠された実行ファイル | conda info --envs、Get-Command python -All、sys.executable |
RemoteSigned で 1 個のダウンロードモジュールだけ拒否 | Internet ゾーン印または無効署名 | 正確なパス、署名、代替ストリーム、来歴 |
この表で該当層の証拠が得られるまで、Anaconda の再インストール、レジストリ編集、全プロファイル削除、ポリシー拡大を行わないでください。
11. セキュリティと自動化の注意
- PowerShell プロファイルは実行コードです。インストーラーが変更したら差分を確認します。
- 秘密をプロファイルやコマンド履歴へ置かないでください。環境の activate は秘密を保護しません。
- 管理対象環境ではグループポリシーを保ち、承認済み署名プロファイルまたは明示コマンドを使います。
- 自動化では環境を固定し、
sys.executableと終了状態を記録し、ユーザーの対話プロファイルに依存しません。 - Windows PowerShell と PowerShell 7 の両方を支援する場合だけ両方を試験します。プロファイル場所とモジュール環境が異なる場合があります。
- 実行ポリシーは偶発的な実行を減らしますが、Microsoft は意図的なコード実行を防ぐセキュリティシステムではないと明記しています。
12. 完全な 2019 年エクスポート
以下は完全な 2019 年 WordPress エクスポートです。Unrestricted の対処は歴史的来歴として保存し、現在の推奨にはしません。リポジトリ整形のため不可視の行末空白だけを正規化しています。
---
id: 1982
title: 'Run Anaconda Script in Powershell to Error'
slug: 'run-anaconda-script-in-powershell-to-error'
date: '2019-07-05T06:56:14'
modified: '2019-07-05T06:56:17'
status: 'publish'
link: 'https://blog.lazying.art/en/html/computer_internet/software/1982/run-anaconda-script-in-powershell-to-error.html'
author: 'Lachlan Chen'
categories:
- 'Software'
---
I met this error when open Powershell
+ . <<<< 'C:UsersuserDocumentsWindowsPowerShellprofile.ps1'
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : RuntimeException
after running
conda init powershell
It get solved by execute this in Powershell
Set-ExecutionPolicy Unrestricted -Scope CurrentUser
