@ oɔɯǝɹ의 답변에있는 문서는 다소 접선 원 인 경우 좋습니다.
당신은 노화 PowerShell을 ISE를 교체 한 후 설치 예정입니다 비주얼 스튜디오 코드, 사용하는 경우 VS 코드 PowerShell을 확장 했다 여러 서식 옵션을 포함, 적어도 부분적 에 기초 비공식 PowerShell을 모범 사례 및 스타일 가이드를 . VS Code와 PowerShell 확장은 모두 Microsoft에서 관리하므로 비공식 가이드만큼 공식적입니다.
나는 그들이 진술 한 모든 것에 동의하지 않습니다. 예를 들어 필자는 필요하지 않은 세미콜론이 필요한 PHP, Java, C # 및 SQL에서 왔습니다. 코드가 없으면 나에게 잘못 보이 므로 포함시킵니다. 이 경우 #requires SemicolonTerminator
대부분의 스크립트에서 활성화하면 공백이 줄 바꿈에 대해 걱정할 필요가 없습니다. 나는 캐리지 리턴과 다른 VB-ism을 탈출하는 것을 싫어합니다.
이것들의 나머지는 나의 의견이다 :
실제 cmdlet 이름 또는 별칭을 사용 하시겠습니까?
모호하지 마십시오. 저장된 스크립트에서 별명을 사용하지 마십시오. 기본 별명까지도 사용자가 기본 별칭을 변경하는 것을 막을 수있는 것은 없습니다. 변경 불가능하다고 가정하는 것이 더 안전합니다.
cmdlet 매개 변수 이름을 전체 또는 부분적으로 만 지정하십시오 (dir -Recurse와 dir -r)
다시 한 번 모호하지 마십시오. 전체 매개 변수 이름은 최상의 순방향 호환성을 갖습니다. -r
오늘 모호하지는 않지만 향후 버전의 명령이 새로운 매개 변수를 도입하는 것을 막을 수는 없습니다. IDE (ISE 또는 VS Code)를 사용하게됩니다. 히트 Ctrl+ Space그 매개 변수를 자동으로 완성.
그 주 ls -r
입니다 모호합니다. -ReadOnly
또 다른 매개 변수입니다 Get-ChildItem
.
cmdlet에 문자열 인수를 지정할 때는 따옴표로 묶어야합니다 (New-Object 'System.Int32'대 New-Object System.Int32).
일반적으로 따옴표는 필요할 때만 사용해야합니다 (예 : New-Object -TypeName 'System.Collections.Generic.HashSet[System.Int32]'
. 가능하면 작은 따옴표를 사용하고 작은 따옴표를 캡슐화하거나 변수를 포함해야하는 경우 큰 따옴표 만 사용하십시오).
함수 및 필터를 작성할 때 매개 변수 유형을 지정합니까?
동일한 매개 변수로 다양한 유형을 구체적으로 수용해야하고 개별 매개 변수 세트를 작성하지 않으려는 경우가 아니라면 일반적으로 수행합니다.
(공식) 올바른 경우에 cmdlet을 작성합니까?
파스칼 케이스. 예.
BEGIN ... PROCESS ... END와 같은 키워드는 대문자로만 작성합니까?
나뿐만 문, 연산자 및 언어 구조를 본 적이 Begin
, If
, ForEach
, -NotIn
뿐만 아니라 begin
, if
, foreach
, -notin
. 개인적으로, 나는 소문자를 선호하고 명령을 파스칼 케이스로 남겨 두지 만 둘 다 동일합니다.
기타 :
항상 매개 변수를 지정하십시오. 위치 순서에 의존하지 마십시오. New-Object -TypeName System.Int32
이상 New-Object System.Int32
. 그것이 합의되었는지는 모르겠지만 다시 한 번 "모호하지 않다"는 일반적인 아이디어를 뒷받침하는 것 같습니다.
모듈을 작성하는 경우로 표시된 표준 동사를 사용합니다 Get-Verb
. 그러나이 목록은 매우 좁기 때문에 나만 실행할 수있는 스크립트의 독립 실행 형 스크립트 이름은 그렇지 않습니다. 일반 동사 목록의 문제점은로 향하는 경향이 있다는 것 Get-ScriptForSpecificPurposeNoNotThatOneTheOtherOne.ps1
입니다. PDF 파일에서 특정 페이지를 추출하는 스크립트를 작성하는 경우 호출하지 않습니다 Get-ExtractedAccountPDFPages.ps1
. 나는 그것을 부르고있다 Extract-AccountPDFPages.ps1
. 나는 프로그램 자체로 실행되는 스크립트의 발견 가능성에 대해 걱정하지 않으며 본질적으로 모듈식이 아닙니다.
더 읽기 쉽고, 구체적이거나 유지 관리가 쉬운 규칙을 어기십시오.