PowerShell 파일을 실행 파일로 변환

Marion Paul Kenneth Mendoza 2023년6월20일
PowerShell 파일을 실행 파일로 변환

다양한 방법으로 PowerShell 스크립트(PS1)를 호출할 수 있지만 모두 한 가지 단점이 있습니다. 단순히 표준 Windows 실행 프로그램(EXE)처럼 실행할 수 없다는 것입니다. 우리는 스크립트에서 코드를 편집하는 것을 방지하거나 사용자가 스크립트를 더 쉽게 실행할 수 있기를 원합니다.

이제 PS1EXE로 변환하는 방법을 배울 시간입니다. 이 기사에서는 PS1에서 EXE 모듈을 사용하고 PowerShell 파일을 실행 파일로 적절하게 변환하는 방법에 대해 설명합니다.

PSEXE 유틸리티를 사용하여 PowerShell에서 PS1EXE로 변환

PS2EXE는 PowerShell 스크립트를 다른 언어로 변환하지 않는 무료 오픈 소스 Windows PowerShell 모듈입니다.

대신 C# 언어로 작성된 경량 PowerShell 호스트로 PowerShell 스크립트를 캡슐화하고 메모리에서 동적으로 생성된 C# 코드를 실행 파일로 컴파일합니다.

PowerShell에서 PSEXE 모듈 설치

PS2EXE는 모듈을 사용하여 스크립트를 실행 파일로 변환하므로 PowerShell 갤러리에서 설치해야 합니다. 지침에 따라 PS2EXE 유틸리티 모듈을 설치합니다.

  1. PowerShell 콘솔을 관리자로 엽니다.

  2. Install-Module cmdlet을 실행하여 PowerShell 갤러리에서 모듈을 다운로드하고 설치합니다.

    Install-Module ps2exe
    
  3. Y를 입력하고 신뢰할 수 없는 리포지토리에 대한 프롬프트가 표시되면 Enter를 누릅니다. 괜찮아요; 이 메시지는 무해합니다.

    Untrusted repository
    You are importing the modules from an untrusted location. If you trust this location, change its InstallationPolicy by running the Set-PSRepository command. Are you certain you want to install the modules from the 'PSGallery'?
     [Y] Yes [N] No  [?] Help (default is "N"): Y
    

PowerShell을 사용하여 PS1EXE로 변환

명령줄을 통해 단일 Windows PowerShell 스크립트를 실행 파일로 변환하려면 기본 PS2EXE 명령(Invoke-PS2EXE)을 사용하는 한 줄이 필요합니다. 명령 다음에는 변환할 스크립트의 경로와 만들려는 실행 파일의 경로가 옵니다.

## Use the cmdlet
Invoke-PS2EXE .\test.ps1 .\sample.exe

## Using the alias
ps2exe .\test.ps1 .\sample.exe

이제 sample.exe를 실행할 수 있습니다. 그러면 source.ps1 스크립트에 정의된 코드가 호출됩니다. 스크립트를 변환하는 동안 NoConsole 매개 변수를 사용하지 않은 경우 sample.exe 파일을 실행할 때 PowerShell 콘솔이 나타납니다.

콘솔 숨기기

앞의 예에서 sample.exe를 실행하면 일반적인 PowerShell 콘솔이 나타납니다. 대부분의 경우 우리는 이것을 보고 싶지 않습니다.

이를 방지하기 위해 EXE를 생성할 때 NoConsole 매개변수를 사용할 수 있습니다.

Invoke-ps2exe "D:\PS\Script.ps1" "D:\PS\Sample.exe" -noConsole
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

관련 문장 - PowerShell Script