2013-08-30 1 views
1

bash의 source 명령을 powershell에서 에뮬레이트하려고합니다. 그 의도는 내 microsoft.powershell_profile.psl을 변경하고 그것을 기존의 powershell 인스턴스로 가져 오는 것입니다. powershell에서 'source'명령을 에뮬레이트하십시오.

명령 줄

$profile_content = [string]::join([environment]::newline,(get-content $profile)) 
invoke-expression $profile_content 

전체에서 다음 명령이 작동

좋다; 나는 microsoft.powershell_profile.psl에 넣었고 작동하지 않습니다.

function source{ 
     $profile_content = [string]::join([environment]::newline,(get-content $args[0])) 
     invoke-expression $profile_content 
} 

나는 무엇인가 간과하고 있습니까?

+0

값은'$의 profile'과'$ 인수 [0]'로 전달되고 있는지 당신이 공유 할 수 있습니까? – JLewkovich

+0

$ profile은 powershell 환경의 프로필입니다. 내 시스템의 값은 C : \ Users \ \ Documents \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1입니다. 원본 명령을 'source $ profile'로 호출합니다. –

+0

업데이트 : 휠을 잘못된 방식으로 다시 작성하려고합니다. 더 나은 사용 '.' 대답했다. –

답변

5

당신이 이미 PowerShell을에 내장되어 원하는 :

. C:\path\to\some.ps1 

about_Operators 참조 :

. 도트 소싱 연산자
는 현재 범위에서 스크립트를 실행하도록 모든 기능 별칭 및 스크립트가 만드는 변수는 현재 범위에 추가됩니다.

. c:\scripts.sample.ps1 
0

에 한번 당신의 Microsoft.PowerShell_profile.ps1을 변경하면 다음과 같이하기 :

function source{ 
     $profile_content = [string]::join([environment]::newline,(get-content $args[0])) 
     invoke-expression $profile_content 
} 

source $profile 

는 기본적으로, 당신은 단지 기능을 정의 할 수 없습니다, 당신은뿐만 아니라 파일을 호출해야합니다. , 함수 설정 방식에 따라 무한 루프가 발생합니다. function source()을 다른 것으로 바꿉니다.

+0

나는 그것을 얻지 못한다. 왜 함수에 대한 호출을 'Microsoft.PowerShell_profile.ps1'의 함수 정의의 일부로 포함시키고 싶습니까? 나는 명령 행에서 함수를 호출 할 것이다. 그리고 왜 무한 루프인가? 이 두 줄의 코드는 명령 줄에서 작동합니다. –

관련 문제