Powershell – Invoke-BatchCommand

일반 cmd 에서 잘 수행되던 명령이 Powershell 에서 똑같이 입력 했을 때 오류가 나는 경우가 있다. 대부분 특수문자가 있을때 Powershell이 특수 문자를 특정 연산자로 인식하면서 의도하지 않은 동작이 일어나는 경우 이다.
예를 들어 svn Dump file을 load하는 경우 다음과 같은 명령을 사용한다.

cmd 에서는 잘 실행되지만 Powershell 에서는 다음과 같은 Error가 날 것이다.

‘<' 연산자는 나중에 사용하도록 예약되어 있습니다. 위치 줄:1 문자:21 + svnadmin load test < <<<< .test.Dump + CategoryInfo : ParserError: (<:OperatorToken) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : RedirectionNotSupported

문제를 해결 하기 위해서는 Error 를 발생시킨 연산자를 Powershell이 올바르게 사용 할 수 있도록 수정 해 줘야 하는데, 번거롭고 정확히 파악 하지 못했을때에는 귀찮은 작업이 된다.

이럴 때 사용할 명령을 실제 cmd로 실행 시키는 Invoke-BatchCommand 라는 Function을 만들어 쓴다. 과정은 function parameter로 받은 문자열을 가지는 임시의 .bat 파일을 만들고 이 파일을 실행 한뒤 작업이 종료되면 .bat 파일을 지운다.

사용예

One thought on “Powershell – Invoke-BatchCommand

  1. i like this 좋은 읽기

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">