sourcetip

PowerShell 스크립트에서 스크립트 코드를 재사용/ Import하려면 어떻게 해야 합니까?

fileupload 2023. 4. 8. 09:09
반응형

PowerShell 스크립트에서 스크립트 코드를 재사용/ Import하려면 어떻게 해야 합니까?

이전 스크립트와 동일한 작업을 수행하는 PowerShell 스크립트를 작성해야 하는데 이번에는 XML 파일이 아닌 CSV 파일을 읽어야 합니다.두 스크립트에 필요한 공통 기능을 갖춘 PowerShell 스크립트를 생성하여 이 공통 스크립트 파일을 두 메인 파일에서 재사용할 계획입니다.

의 디렉토리에서 합니다.C:\공통 파일 및 기타rd 3개 파티 라이브러리를 드라이브하여 보관합니다.D:\ 드라이브:C:\script_1_folder\Script1.ps1,C:\script_2_folder\Script2.ps1공통 파일과 서드파티rd 라이브러리는D:\script_common.

  1. 메인 파일에서 공통 파일을 호출하는 방법(경로를 얻는 방법, 공통 파일의 인스턴스를 만드는 방법 및 사용 방법)

    와의 차이는 무엇입니까?

    $script_path    = $myinvocation.invocationname;      
    $script_folder  = split-path $script_path -parent;
    write-host  $script_folder  
    $script_name    = split-path $script_path -leaf;      
    $current_folder = [system.io.directory]::getcurrentdirectory()    
    [system.io.directory]::setcurrentdirectory($script_folder)
    Set-Location $script_folder
    add-type -path ".\AlexFTPS-1.1.0\AlexPilotti.FTPS.Client.dll"
    

    그리고.

    $path = (split-path $MyInvocation.MyCommand.Path) 
    $loggerPath = $path + "\Logger\release\Logger.ps1";
    .$loggerPath; 
    $logger = Logger;   
    $logger.load($path + "\Logger\config\log4ps.xml","log.log"); 
    

    그리고 내 문제와 관련하여 그것을 하는 가장 좋은 방법은 무엇인가?

  2. Windows temp 폴더에 temp 폴더를 작성하려면 어떻게 해야 하나요?

Powershell의 공통 코드

포함할 코드를 다른 PS1 파일에 넣은 후 해당 파일을 "도트 소스"하여 현재 범위에 포함할 수 있습니다.

. D:\script_common\MyCode.ps1

그게 다예요.

모듈 사용방법

모듈을 해 볼 수 은 '모듈'을 사용할 수 .모듈을 사용하여Import-Modulesysloglet.Active Directory 。

Import-Module ActiveDirectory

이 경우 모듈의 이름만 필요합니다.모듈은 특별한 디렉토리에 있기 때문입니다.

자신의 에 Powershell이라는 을 ..psm1이들 할 수 있는 합니다.일반적으로 이들 중 하나에서는 프리 플로팅 코드를 사용하지 않고 모듈을 Import하는 코드에서 사용할 수 있는 함수를 작성합니다.

임의의 장소에서 스크립트모듈을 Import하려면 풀패스를 사용합니다.

Import-Module D:\script_common\MyModule.psm1

모듈 패스

독자적인 모듈을 작성할 때는 오래된 장소에 보관하고 풀 패스로 참조할 수 있습니다(위와 같습니다).Powershell이 모듈을 찾는 위치도 몇 가지 있습니다.

  • $PSHome\Modules(%Windir%\)시스템32\Windows PowerShell\v1.0\Modules) -- Windows 부속되어 있는 모듈용으로 예약되어 있습니다. 여기에 물건을 두지 마세요.
  • $Home\Documents\WindowsPowerShell\Modules(%UserProfile%\)문서\" PowerShellWindows PowerShell\")
  • %ProgramFiles%\Windows PowerShell\Modules -- 이 링크에는 기재되어 있지 않습니다.필요한 상태 설정 모듈(아마 시스템 전체에 적용되기 때문에)에 더 많이 사용되는 것 같습니다.

이것들은 디폴트입니다만, Powershell 에서는, 라고 하는 독자적인 환경 변수를 사용하고 있습니다.PSModulePath어디를 봐야 할지 결정하다PATH해당 변수에 자신의 폴더를 추가할 수 있습니다.

이를 통해 모듈을 자신의 위치에 유지할 수 있습니다.폴더 구성 방법 및 이름 지정 방법에 대한 자세한 내용은 링크를 참조하십시오.

서드파티제 모듈과 서드파티제의 모듈을 같은 장소에 보관하는 경우는 서드파티제의 기능에 따라 달라집니다.자체 모듈을 자체 위치에 설치하고 경로를 변경하거나 원하는 위치에 모듈을 배치할 수 있습니다.

Temp 폴더 생성

를 사용할 수 있습니다.TEMP또는TMPtemp 폴더의 경로를 가져오기 위한 환경 변수입니다.Powershell에서 검색하려면$env:TEMP또는$env:TMP.

그 안에 만들 폴더의 고유한 이름을 생각해내야 합니다.이를 위한 한 가지 방법은 GUID를 사용하는 것입니다.

$dirName = [System.Guid]::NewGuid().ToString()
New-Item -Path "$($env:TEMP)\$dirName"

다음과 같이 스크립트를 닷소스할 수 있어야 합니다.

. "C:\script_common\script.ps1"

그 후 실행 중인 스크립트에서와 같이 모든 기능을 사용할 수 있습니다.

단, 일반적인 기능을 가진 모듈을 작성하는 것이 더 좋습니다.(여기서 스크립트 작성 방법:남자 블로그). (TLDR 버전: 함수를 psm1 파일에 저장, 모듈 경로에 저장, Import)Import-Module, 이익)

폴더 작성 시:

New-Item C:\Temp\yourfolder -type directory

다음은 powershell에서 템플릿시스템을 작성하려는 시도입니다.https://github.com/kayasax/PowershellTemplate
템플릿 내의 태그를 사용하여 저장소에 저장한 기능을 재사용할 수 있습니다.예를 들어, 다음과 같습니다.
<include logging/log>
템플릿에서 스크립트로 변환할 때 함수 저장소의 로그 디렉토리에 있는 log.ps1 파일의 내용이 삽입됩니다.

언급URL : https://stackoverflow.com/questions/27138483/how-can-i-re-use-import-script-code-in-powershell-scripts

반응형