2012-12-04 3 views
6

나는 점 공급 한 경우 :PowerShell에서 도트 원본 스크립트를 제거하려면 어떻게해야합니까?

. "\foo-bar.ps1" 

어떻게 모든 목록을 얻을 볼 수있는 점 소스 스크립트와 어떻게 제거 할 수있는 점 소스 스크립트에서 "foo는 바/PS1"?

+0

기본적으로 술을 마시는 것과 같습니다. 결과 만 완화 할 수는 있지만 완전히 마시지 마십시오. 음료수를 마시지 말아야하거나 PowerShell의 경우에는 그냥'# '을 줄에 넣으십시오. – maoizm

답변

11

필자가 아는 한 점으로 된 원본 스크립트는 삭제할 수 없습니다. 이것이 PowerShell 2.0에서 소개 된 모듈입니다. About_Modules

"foo-bar.ps1"을 모듈로 변환 할 수 있습니다. 모듈을 가져오고 (가져 오기 - 모듈) 제거 할 수 있습니다 (모듈 제거).

5

은 당신이 일반적으로에 도트 소스 스크립트 을 제거 할 수 있지만, 자신의 코딩 규칙에 따라 당신이 실제로을 할 수있을 수 있다는 @JPBlanc에 동의합니다. 당신은 일반적으로에서이 작업을 수행 할 수없는 이유 에 대한

먼저 몇 관측 :

(1) PowerShell을 별도의 법인으로 도트 소스 스크립트의 어떤 개념이 없습니다. 도트 소스를 작성하면 프롬프트에서 각 행을 수동으로 입력 한 것처럼 내용이 현재 컨텍스트의 일부가됩니다. 따라서 실제 존재하지 않기 때문에 제거 할 수 없습니다 :-)

(2) 점 소스 스크립트를 나열 할 수없는 이유와 동일합니다.

지금, 어쨌든 그것을 수행하는 방법 :

내용과 도트 소스 스크립트의 규칙에 따라,하지만 당신은 당신이 원하는 일을 할 수 있습니다. 예를 들어, 스크립트가 단순히 세 가지 기능을 정의하는 경우 -이 func-a, func-bfunc-c가 --then 당신 모두 목록 그 함수를 제거 호출합니다.

목록 동화 기능 :

Get-ChildItem function:func-* 

제거 동화 기능 :

Remove-Item function:func-* 
3

는 점 소스 파일의 경로를 알고있는 경우 기능을 원천 제거 할 수 있습니다

Get-ChildItem function: | 
Where-Object {$_.ScriptBlock.File -eq $path} | 
Remove-Item 
+0

PS v5와 다른 점은 확실치 않지만'Remove-Item Function : \ Get-WMIReboot' 여기서'Get-WMIReboot'는 제거 할 함수의 이름입니다. 'dir function :'을 사용하여 함수가 사라 졌는지 확인하십시오. – user4317867

관련 문제