ドット ソースがある場合:
. "\foo-bar.ps1"
すべてのドット ソース スクリプトのリストを取得するにはどうすればよいですか? また、ドット ソース スクリプトから「foo-bar/ps1」を削除するにはどうすればよいですか?
ドット ソースがある場合:
. "\foo-bar.ps1"
すべてのドット ソース スクリプトのリストを取得するにはどうすればよいですか? また、ドット ソース スクリプトから「foo-bar/ps1」を削除するにはどうすればよいですか?
私の知る限り、ドット ソース スクリプトを削除することはできません。これが、PowerShell 2.0 でモジュールが導入された理由です。About_Modulesを参照してください
「foo-bar.ps1」をモジュールに変換できます。モジュールは、インポート (Import-Module) および削除 (Remove-Module) できます。
一般的にドットソースのスクリプトを削除できないという@JPBlancに同意しますが、独自のコーディング規則によっては、実際にこれを実行できる場合があります。
最初に、一般的にこれを行うことができない理由についてのいくつかの観察:
(1) PowerShell には、ドット ソース スクリプトを個別のエンティティとして捉える概念がありません。ドットソースすると、プロンプトで各行を手動で入力したかのように、その内容が現在のコンテキストの一部になります。したがって、実際には存在しないため、削除できません:-)
(2) (1) とまったく同じ理由で、ドットソースのスクリプトをリストすることはできません。
さて、とにかくそれを行う方法:
ただし、ドット ソース スクリプトの内容と規則によっては、必要なことを実行できる場合があります。たとえば、スクリプトが単に 3 つの関数を定義するだけの場合 (これらfunc-a
を 、func-b
、および とfunc-c
呼びます)、これらの関数を一覧表示して削除することができます。
同化された関数をリストします。
Get-ChildItem function:func-*
同化された関数を削除します。
Remove-Item function:func-*
ドット ソース ファイルのパスがわかっている場合は、ソース関数を削除できます。
Get-ChildItem function: |
Where-Object {$_.ScriptBlock.File -eq $path} |
Remove-Item