1

모든 스크립트 contenet을 게시 할 수는 없지만 JSON을 다운로드하고 ConvertFrom-Json cmdlet을 사용하여 개체를 JSON으로 변환한다는 것이 기본 개념입니다. 일부 개체는 필터링되고 나머지는 XML/XLS 문서 (Excel 2003 형식)에 기록됩니다. 이 파일은 이메일에 첨부되어 다양한 사람들에게 전송됩니다.내 PowerShell 스크립트는 ISE에서 실행할 때만 작동합니다.

내가 겪고있는 문제는 Powershell ISE에서 실행할 때만 작동한다는 것입니다. 예약 된 작업을 설정하거나 cmd에서 호출하거나 심지어 powershell에서 호출하려고하면 첨부 파일은 완전히 비어 있습니다. 마치 일부 기능이 실행되지 않는 것 (루프가 통과하여 모든 행을 작성하는 것처럼)입니다.

당분간 ISE에서 계속 실행할 수 있지만이 스크립트의 아이디어는 개입이 필요하지 않은 자동 전자 메일을 보내는 것입니다. 이 문제의 원인은 무엇입니까?

+2

어디에서 휴식이 일어나는지 알아야합니다. PoSH v2 또는 v3으로 예정된 작업을 실행합니까? 당신은 "그것은 마치 일부 기능이 실행되지 않는 것"이라고 말합니다. ** ** 이것을 테스트해야합니다 **! 함수가 입력되었음을 나타내는 로그 파일을 작성하기 위해 모든 함수에 명령문을 넣으십시오. 우리가 진단하기에 충분하지 않습니다. Windows 이벤트 로그에 어떤 것이 있습니까? – alroc

+1

Powershell에서 호출하여 작동하지 않는 경우 점으로 소스 범위 (./script.ps1)로 로컬 범위에서 실행하십시오. 그러면 세션에있는 모든 변수가 그대로 유지되며 검사를 시작하여 그 변수가 어디로 떨어 졌는지 확인할 수 있습니다. – mjolinor

+0

나는 그것을 작동시킬 수 있었다. 스크립트에서 나중에 정의 된 다른 변수를 사용하여 변수를 정의했습니다. 그것을 옮긴 후에, 그것은 다시 일하기 시작했습니다. 감사! – EGr

답변

0

필자는 powershell의 단일 스레드 기능을 사용하여 scrip을 실행하는이 문제를 해결했습니다. 다른 옵션을 시도해 볼 수도 있습니다. 자세한 내용을 보려면 link으로 이동하십시오.

powershell.exe -noexit c:\test.ps1 -sta 
+0

나는 그것을 시도하고 그것은 작동하지 않았다. – EGr

2
당신은 아래 링크를 참조하십시오이

powershell.exe -noexit -file c:\test.ps1 

또는

pwershell.exe -noexit ". c:\test.ps1" 

같이 수행 할 수 있습니다 스크립트 "소스 점"을 실행해야

- 파일 섹션 http://technet.microsoft.com/en-us/library/hh847736.aspx

2

원래 게시물에 대한 답변을 바탕으로, 스크립트가 ISE에서 실행되는 스크립트가 변수를 인식하도록 허용하는 버그/기발한/기능으로 인해 (예기치 않게) ISE에서 작동하는 것 같습니다. 콘솔 창에서 사용되며 그 반대도 마찬가지입니다.

스크립트가 변수가 이미 정의되어 있고 스크립트에서 신중하게 초기화되지 않은 상태에서 스크립트를 실행하면 논리 문제 또는 예기치 않은 결과가 발생할 수 있습니다. 가능한 한 깨끗한 환경에서 코드를 테스트 할 수

는 물론 PowerShell을 ISE를 를 다시 시작 할 수 스크립트가 완전히 깨끗한 테스트 환경에서 실행 확인하십시오. 더 편리한 방법은 다른 PowerShell 탭을 여는 것입니다. PowerShell ISE에서 파일/새로 만들기 PowerShell 탭을 선택하십시오.

  • 스크립트의 사용 Set-StrictMode 2 정의되지 않은 변수를 잡으려고 등

    Set-StrictMode -Version 2.0

    은 (문자열의 초기화 변수를 포함)를 초기화 변수에 대한 참조를 금지한다.
  • 개체의 존재하지 않는 속성에 대한 참조를 금지합니다.
  • 호출 방법의 구문을 사용하는 함수 호출을 금지합니다.
  • 이름이없는 변수 ($ {})를 금지합니다.
관련 문제