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
'programing' 카테고리의 다른 글
속성 변경 시 중단점 (0) | 2023.10.29 |
---|---|
함수 선언의 최대 매개 변수 수 (0) | 2023.10.29 |
Next.js: getInitialProps()에서 데이터 가져오기: 서버 측 대 클라이언트 측 (0) | 2023.10.29 |
모듈 'mysql' node.js를 찾을 수 없습니다. (0) | 2023.10.29 |
하위 쿼리 또는 분석 기능이 표시된 전체 테이블 검색을 피합니다. (0) | 2023.10.29 |