2011-09-02 5 views
2
여기

내가 내 스크립트에서 호출 할 수있는 기능입니다 : 그것은 완벽하게 작동Powershell : 스크립트가 명령 줄에서 실행되지 않지만 ISE에서 실행됩니까?

Function SetUp-ScheduledTasks 
{ 
param 
(
    [string]$Server = "", 
    [string]$TaskName = "", 
    [string]$ReleasePath = "", 
    [string]$User = "", 
    [string]$Pwd = "" 
) 

try 
{ 
    Set-ExecutionPolicy RemoteSigned 

    Remove-ScheduledTask -ComputerName $Server -TaskName $TaskName Get-ScheduledTask 
    Create-ScheduledTask -ComputerName $Server -TaskName $TaskName -TaskRun $ReleasePath -Schedule "DAILY" -StartTime "02:00:00" -RunAsUser $User -RunAsPwd $Pwd 

    exit 1 
} 
catch 
{   
    exit 0 
} 

} 

내가 스크립트 파일에 있지만 함수 외부 Powershell_ISE 내에서이 전화, 여기에 내가 그것에 대해 할 수있는 작업은 다음과 같습니다 SetUp-ScheduledTasks "myserver" "MyTask1" "c:\release" "theuser" "thepassword"

그러나 PS 명령 행에서 다음과 같이 호출 할 때 : . .\ScheduledTasks.ps1 SetUp-ScheduledTasks "myserver" "MyTask1" "c:\release" "theuser" "thepassword" 아무 것도하지 않습니다.

대시와 이름을 사용하여 각 매개 변수의 정규화를 시도했지만 여전히 작동하지 않았습니다.

무엇이 누락 되었습니까?

감사합니다. ,의 당신이 지금 test.ps1

에 저장한다고 가정 해 봅시다

function a{ 
write-host "this is function a" 
} 

:

+0

ISE에서 실행할 때 명령 프롬프트 나 맨 위의 편집기 창에서 실행 중입니까? – JNK

+0

ISE에서 편집기 창에서 녹색 실행 버튼을 클릭하기 만하면됩니다. – user259286

+0

그러면 두 가지 다른 일을하고있는 것입니다. 스크립트에 추가 한 다음 완전히 다른 명령 줄에서 매개 변수로 실행하려고합니다. – JNK

답변

6

은 내가 무슨 일을 반복하자,하지만 간단한 예제 :

당신은 너무 같은 기능을 가지고 ISE에서 이것을 테스트하려면 아래에서 test.ps1을 수행하십시오.

function a{ 
write-host "this is function a" 
} 

a 

. .\test.ps1 a

: 실행 버튼을 당신은 당신이 (a)와, 콘솔과 같이 호출 결론없이 원래 test.ps1를 사용하는 지금이 경우 this is function a

에 예상되는 출력을 얻을

그리고 출력을 제공하지 않습니다. 왜? a, 의도 한 함수 호출이 매개 변수로 스크립트에 전달되고 함수 a가 호출되지 않습니다.

이 같이 할 필요가 :

. .\test.ps1; a

PS : 당신이 잘못된 장소에서 exit 0exit 1을 사용하지 않는?

+0

예, 그게 전부입니다! 고맙습니다. 종료 코드에 관해서는, 나는 성공을 의미하기 위해 try 블록 안에 1을, catch에 0을 넣어서 종료한다는 인상을 받고있다. 그게 잘못된거야? 그들은 다른 곳에 있어야합니까? 다시 한 번 감사드립니다! – user259286

+0

@ user259286 - 종료 코드 0은 성공적인 완료를 의미합니다. – manojlds

+0

오, 그래서 그것은 단지 취향의 물건일까요? 아니면 그렇게 되어야만 하는가? – user259286

관련 문제