2017-11-13 8 views
2

을 ... 로그인 .. 나는 명백한 것을 놓치고 있는지 궁금해한다.기본 파워 쉘 내가 파워 쉘 주위에 내 머리를 얻기 시작하고,하지만 난 여전히 바보 같은 물건의 pleeeenty을</p> <p>I 함수의 작은 숫자를 여러 번 실행 PowerShell에서 자동화 스크립트를 작성했습니다

함수가 실행될 때마다 몇 가지 사용자 입력과 함께 전달되는 몇 가지 변수에 의존합니다 ... 까다로운 일도 아니고 원격 서비스를 다시 시작하고 시간 서비스를 동기화하는 등의 작업을하지 않아도됩니다. 가고 싶지만 실제로 작업하기 위해 사용하는 실제 코드보다 더 많은 코드를 로그에 추가하는 것처럼 보입니다. 이게 정상인가, 아니면 뭔가 빠졌는가?

Try/Catch/Finally 블록을 살펴 봤지만 다루기가 힘들어 보이며 그 접근법에 따라 함수가 중첩되어있는 것처럼 보입니다 ... 사용중인 함수의 예제가 아래에 나와 있습니다.

Function MyFunc($Param1, $Param2){ 
Do{ 
    $Var = Get-Something | Select Name, MachineName, Status 
$NotherVar = Read-Host -Prompt "Do you want to Stop or Start or check the $Var (1 to Start, 2 to stop, 3 to check, 4 to continue)?" 
    If ($SetState -eq 1) 
    { 
     Do Stuff 
    } 
    ElseIf ($Var -eq 2) 
     { 
     Do Stuff 
    } 
    ElseIf ($Var -eq 3) 
     { 
     Do Stuff 
    } 
    } 
    Until ($Var -eq 4) 
Do other stuff 
} 

단순히 의회의 행위없이 Add Content $ logpath $ FunctionResult를 사용할 수 있습니까?

+0

와우 ...을 downvoted 될 것입니다. 조금 가혹합니다. 나는 틀린 공개 토론에 배치 했는가? 내가 말한 것이 었나요? 구취? 나는 그것을 얻지 못한다. ... –

+0

내가 볼 수있는 것 같아요 - Tee, 2> 또는 로그 파일에 성공/실패를 기록하는 비슷한 ... –

+0

아래 내 대답 이외에 , Start-Transcript는 당신이 찾고있는 모든 것을 할 수 있습니다. –

답변

2

"실행 및 로그"기능을 생성하고 "할 일"을이 기능의 scriptblock 매개 변수로 호출하십시오.

예 :

function Invoke-RunScriptblockAndLogResult([scriptblock]$sb) 
{ 
    $result = Invoke-Command -ScriptBlock $sb 

    # log result 
    Write-Host "RESULT: $result" 
} 

Invoke-RunScriptblockAndLogResult {2+2; 3*3} 

$myScript = { 
    4+4 
    5*5 
} 

Invoke-RunScriptblockAndLogResult $myScript 

출력 :

RESULT: 4 9 
RESULT: 8 25 

물론 쓰기 - 호스트 위 Add-Content이든 ...

+0

나는 15 가지 명성을 누리고 있으며, 당신에게 부자가되는 +1을 줄 수는 없다는 것을 후회합니다 ... 나는 거기에 도착하면 결국 다시 원을 그리며 +1 할 것입니다. 언뜻보기에 이것은 Dr.가 지시 한 것처럼 보입니다. 너 천재 야. 시간과 노력에 감사드립니다. 포스가 함께하길. –

+0

내가 한 일은 당신이 한 일을 파악하는 것입니다. 나는 아마 그것을 얻습니다, 어쩌면 ... 스크립팅은 내 자연 서식지가 아니지만 서둘러 배우고 있습니다. 다시 한 번 감사드립니다! –

+0

Yay ... Rep -eq 15 약속 한대로 +1입니다. –