2016-07-07 2 views
1

그래서 나는 마지막 2 시간 동안 인터넷 검색/연구 있었고, 나는 윈도우 7 에이기 때문에자체 서명 인증서를 생성하고이를 사용하여 powershell 스크립트에 서명하려면 어떻게합니까?

내가 새로운-SelfSignedCertificate을 사용할 수 없습니다 ... 눈물의 시점에서 실질적으로 해요 시험판 버전의 .NET 4가 있다고 생각하기 때문에 Windows 7 용 SDK를 설치할 수없는 버그로 인해 makecert를 사용할 수 없지만 그렇지 않습니다. .NET 4를 설치하려고하면 새로운 버전이나 더 나은 버전이 있음을 알립니다.

나는이 문제를 해결하기 위해 레지스트리 해킹을 시도했지만, 불행히도 작동하지 않았습니다.

이 나는이 https://gallery.technet.microsoft.com/scriptcenter/Self-signed-certificate-5920a7c6#content

다운로드 한하지만 그래서 안전하게 사용하는 다른 사람에게 줄 수있는 내가 실제로 내 스크립트에 서명하는 데 필요한 모든 단계를 통해 얻을 관리 할 수없는 것.

인증서를 만들 수 있다고 생각합니다. (제대로했는지는 확실하지 않지만).

암호 나 키를 적용한 다음 내보낼 필요가 있다고 말할 수 있습니까? 나는 아직도 내 스크립트에 구체적으로 서명하는 방법을 확신하지 못하기 때문에 다른 사람들이 그것을 '서명 됨'으로 실행할 수 있습니다.

감사합니다.

다른 방법으로 .exe 파일에서 상대 .ps1 경로를 얻을 수있는 방법을 알고 있다면이 모든 것이 불필요 할 수 있습니다.

스크립트는 .ps1로 정상적으로 작동하지만 PowerGUI를 사용하여 .exe로 컴파일하는 즉시이 줄이 작동하지 않습니다.

. .\Import-XLS.ps1 
$OutFile = ".\TEST$(get-date -Format dd-MM).txt" 
$Content = Import-XLS '.\TEST.xlsx' 

내가 대신 "라는 용어는 같은 것들을 얻을 '. \ 가져 오기 - XLS.ps1은'QuestSoftware \ PowerGUI를 \ APPDATA \ 로컬 \ 온도에 일부 참조와 함께하는 cmdlet의 이름으로 인식되지 않습니다 \ 폴더

그래서 나는 PowerGUI가 이상한 일을하고 있다고 생각하지만 .ps1을 .exe로 변환하는 다른 방법을 모른다. 주 질문에 대한 답변에 따라 .exe 공식적으로 새로운 질문입니다.

감사합니다.

+0

자체 서명 된 인증서로 스크립트에 서명해도 해당 인증서를 제공하지 않은 컴퓨터에서는 '신뢰할 수있는'스크립트가 만들어지지 않습니다. – bluuf

+0

"Set-ExecutionPolicy RemoteSigned"를 사용한다면 맞습니까? 이 스크립트를 사용하려는 일부 사람들은 서명되지 않은 원격 스크립트를 허용하는 수준으로 보안을 제거하는 아이디어를 좋아하지 않았습니다. – XViper

답변

1

그래서 두 가지를 조합하여이 문제를 해결했습니다.

Split-Path $MyInvocation.MyCommand.Path 

[System.AppDomain]::CurrentDomain.BaseDirectory} 

나는 컴파일 된 .exe로했다 후자 동안,하지만에서는,이 .ps1에 있지만 컴파일 된 .exe로 일 전으로, 모두를 사용하는 데 필요한 .ps1.

PowerGUI에서 컴파일 된 .exe에 일관된 경로 폴더 이름이 있으므로 다음을 사용하여 종료되었습니다.

$ScriptPath = Split-Path $MyInvocation.MyCommand.Path 
if ($ScriptPath -match 'Quest Software') {$ScriptPath = [System.AppDomain]::CurrentDomain.BaseDirectory} 

또한이 기능을 .exe에 포함 시켰습니다 (하지만 반드시 필요한 것은 아닙니다). 나는 다음이 내가 지금 스크립트에 대한 작업 인증서를 얻으려고 노력하는 대신 .EXE를 사용할 수 있다는 것을 의미 $OutFile = "$ScriptPath\<Filename>.txt"$Content = Import-XLS "$ScriptPath\<Filename>.xlsx"

을 사용했다. 여전히 .ps1 인 동안 변경 사항을 신속하게 테스트 할 수 있습니다.

저는 PowerGUI를 사용하여 미래에 .exe를 만들거나 상대 경로를 사용해야하는 다른 사람들에게도 도움이되기를 바랍니다.

도움과 조언을 주신 분들께 감사드립니다.

+0

굉장히 좋았지 만'[System.AppDomain]'대신'[AppDomain]'을 사용해야했다. –

0

그래서 PowerGUI를 사용하여 스크립트에서 .exe 파일을 만들지 않았으므로 어둠 속에서 약간의 장면이 나왔지만 외부 파일을 소싱하는 것이 아니라고 추측하고 있습니다. 코드 배포 왜 Import-XLS.ps1의 함수를 스크립트 본문에 복사하지 않는가?

+0

안녕 마이크. 그래, 결국에는 해봤지만 $ Outfile 및 $ Content 파일은 여전히 ​​작동하지 않습니다. 나는 절대 경로를 설정함으로써이 문제를 해결했지만 스크립트로 인해 유연성이 떨어집니다. .exe를 만드는 다른 알려진 방법이 있습니까? (또는 새로운 질문을해야합니까?) 감사. – XViper

+0

의 변형을 사용할 수 있다면'$ ScriptPath = Split-Path $ MyInvocation.MyCommand.Path' 다음'$ ScriptPath \ $ OutFile = "\ TEST.txt"' '$ Content = Import를 사용하십시오. -XLS ' "$ ScriptPath \ TEST.xlsx" 그러나 나는 그 중 하나를 작동하도록 할 수 없습니다. – XViper

+0

만약 dot-sourcing 이외의 것들을 사용하지 않는다면, 너무 깊게 들어가는 것이 낫지 않을 것입니다. 모든 것이 어쨌든 작동하기 쉽습니다. 하지만 인증서 저장소로 가져온 스크립트를 다시 서명하면됩니다. [자세한 내용은 여기] (https://technet.microsoft.com/en-us/library/cc754489(v= ws.11) .aspx) it Set-AuthenticodeSignature를 실행하고 올바른 매개 변수를 지정하는 것만 큼 간단해야합니다. [자세한 내용은 여기] (https://blogs.technet.microsoft.com/heyscriptingguy/2010/06/17/hey-scripting-guy-how-can -i-sign-windows-powershell-scripts-with-enterprise-windows-pki-part-2-of-2 /) –

관련 문제