programing

PowerShell 스크립트를 어디에 놓을 것입니까?

lastcode 2023. 10. 29. 19:46
반응형

PowerShell 스크립트를 어디에 놓을 것입니까?

(실제로 이런 질문을 하는 것이 믿기지 않지만, 오늘은 지력이 떨어졌습니다.)

저는 방금 제 첫 번째 진지한 PowerShell 스크립트를 작성했는데, 정말 만족스럽습니다.매일 사용할 계획입니다.포쉬 커맨드 라인에서 호출할 수 있기를 원합니다.동사 명사형 이름을 붙이겠지만, 지금은 단순한 .ps1이지, 패러마 등을 사용하는 고급 기능 중 하나는 아닙니다.

그럼 어디로 가야하고 포쉬 명령 줄에서 어떻게 불러야 하나요?앞으로 더 쓸 계획입니다!그들은 어디로 가야 합니까?

  • 제 프로필에 있는 기능인가요?
  • 제 길로 가야 하나요?
  • PSM ModulePath에 들어가나요?어쨌든 거기에는 어떤 물건이 들어가나요?재귀적으로 보이나요 아니면 일반 PATH와 똑같나요?

모두 PowerShell 스크립트를 어디에 배치하고 어떻게 구성합니까?저는 C#과 C++ 도구를 만들어 본 경험이 많고 이름과 위치를 잘 알고 있습니다.그리고 다른 극단적인 상황에서 저는 보통 독립적이거나 어떤 폴더에 더미로 쌓여있는 crappy .bat 파일을 많이 해보았습니다.하지만 PowerShell은 매우 다른 것 같습니다.crapy .bat 파일 형식으로 빠르게 만들 수도 있고, 라이브러리와 정교한 서비스를 구축할 수도 있습니다.

시작하기 전에 이런 것들을 어떻게 정리해야 할지 정말 아이디어가 필요합니다.분명 사람들은 다 다르니까, 논의를 좀 했으면 좋겠어요.감사합니다!

프로필과 같은 폴더에 개인 스크립트를 넣었습니다.그러면 백업 및 버전을 함께 백업할 수 있습니다.내 프로필은 다음으로 시작합니다.

$ProfileRoot = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$env:path += ";$ProfileRoot"

내 권장 사항: - 원하는 대로 스크립트를 디렉토리에 저장합니다. 예: c:\posh - $env:path에 디렉토리를 추가합니다.

$env:path += ";c:\posh"

이렇게 하면 다른 디렉토리(예: c:\window)에 있을 수 있지만 스크립트를 호출할 수 있습니다.

[c:\windows] > sampl[TAB] # it expands the name of file to sample.ps1, then hit enter

만약 당신의 sample.ps1 파일에 함수 정의가 포함되어 있고 당신이 그것을 매번 가져온다면, 나는 당신의 $profile 파일에 이 행을 추가하는 것을 고려할 것입니다.

. c:\posh\sample.ps1

스크립트 구성 관련..대본의 용도에 따라 몇개의 dir만 가능 :) 개인, dev, 외부(다운로드), 샘플,...

V2를 사용하면 프로파일이 있는 윈도우즈 PowerShell 디렉토리에 모듈 디렉토리를 생성할 수 있습니다.Import-module을 실행하면 PS가 자동으로 해당 디렉토리에서 모듈을 로드합니다.Windows PowerShell 아래에 "Scripts" 디렉토리와 모듈의 형제 디렉토리를 만들었습니다.

나는 프로필을 사용하여 다음 코드를 가진 변수를 사용하여 일부 디렉토리를 설정합니다.

PS>  cat $Profile
$scripts = "$(split-path $profile)\Scripts"
$modules = "$(split-path $profile)\Modules"
$docs    =  $(resolve-path "$Env:userprofile\documents")
$desktop =  $(resolve-path "$Env:userprofile\desktop")

PS> cat variable:\scripts
C:\Users\andy.schneider\Documents\WindowsPowerShell\Scripts

PS>  cat variable:\modules
C:\Users\andy.schneider\Documents\WindowsPowerShell\Modules

이것이 제가 하는 일입니다.

참고: 의미 있는 것으로 "ModuleName"을 대체합니다.

모듈을 만들어 글로벌 모듈 폴더에 "C:"로 저장합니다.\Windows\시스템32\Windows PowerShell\v1.0\Modules\ModuleName\ModuleName.psm1", 예:

function global:FancyFunction() {
   # do something interesting here.
}

Export-ModuleMember -function FancyFunction 

파워셸 세션을 시작할 때마다 모듈이 로드되도록 파워셸 프로파일을 열고 다음 행을 추가합니다.

Import-Module ModuleName -Force

다음을 입력하면 파워셸 프로필을 쉽게 찾을 수 있습니다.

notepad $profile

새 파워셸 세션을 열 때는 콘솔이나 다른 스크립트에서 다른 작업을 수행할 필요 없이 기능을 호출할 수 있어야 합니다.

PowerShell 7.1에 사용된 PowerShellGet 모듈에 내보낸 변수가 있습니다.

$PSGetPath

4가지 속성을 가지고 있습니다.

AllUsersModules    : C:\Program Files\PowerShell\Modules
AllUsersScripts    : C:\Program Files\PowerShell\Scripts
CurrentUserModules : C:\Users\username\Documents\PowerShell\Modules
CurrentUserScripts : C:\Users\username\Documents\PowerShell\Scripts

스크립트 위치 중 하나를 사용할 수 있습니다.Install-Script그것들을 사용하고 있습니다.

PowerShell 7.1에 사용된 PowerShellGet 모듈에 내보낸 변수가 있습니다.

$PSGetPath

($psgetpath -eq $null)제 컴퓨터에 설치된 모든 파워셸 에디션 안에서 저에게 "True"라고 평가하기 시작했습니다.

무슨 일이 있었는지 아십니까?

언급URL : https://stackoverflow.com/questions/1011243/where-to-put-powershell-scripts

반응형