[powershell] 여러 줄 명령을 입력하는 방법

PowerShell 명령 줄을 여러 줄로 나눌 수 있습니까?

Visual Basic에서는 밑줄 ( _)을 사용 하여 다음 줄에서 명령을 계속할 수 있습니다 .



답변

공백 다음에 억음 악센트 (백틱)를 사용할 수 있습니다.

Get-ChildItem -Recurse `
  -Filter *.jpg `
  | Select LastWriteTime

그러나 이것은 위와 같은 경우에만 필요합니다. 일반적으로 해당 지점에서 명령을 구문 적으로 완료 할 수없는 경우 자동 줄 연속을 얻습니다. 여기에는 새로운 파이프 라인 요소 시작이 포함됩니다.

Get-ChildItem |
  Select Name,Length

|다른 파이프 라인 요소가 없어서 명령을 완료 할 수 없으므로 문제없이 작동 합니다. 중괄호 또는 다른 종류의 괄호를 열면 줄 연속을 직접 사용할 수 있습니다.

$x=1..5
$x[
  0,3
] | % {
  "Number: $_"
}

|쉼표 와 유사하게 일부 상황에서도 작동합니다.

1,
2

JavaScript의 Automatic Semicolon Insertion 과 유사하지만 줄 바꿈 앞에 오는 유효한 문장 있기 때문에 비슷한 부분이 있습니다 .

return
  5

작동 안 할 것이다.

마지막으로 문자열 (모든 종류)은 한 줄 이상으로 확장 될 수도 있습니다.

'Foo
bar'

그런 다음 문자열 내에 줄 바꿈을 포함시킵니다.


답변

난 그냥가 안된다는 것을 발견 어떤 후면 틱과 줄 바꿈 사이의 문자. 공백조차도 명령이 작동하지 않습니다.


답변

대부분의 C와 같은 언어에서는 코드를 가장 쉽게 읽을 수 있다고 생각되는 곳에 중괄호를 배치하는 것에 대해 신중히 생각합니다.

PowerShell 구문 분석기는 명령문이 명확하게 완료되지 않은 시점을 인식하고 다음 줄을 찾습니다. 예를 들어 선택적 스크립트 블록 매개 변수를 사용하는 cmdlet을 상상해보십시오.

    Get-Foo {............}

스크립트 블록이 매우 길면 다음과 같이 작성하십시오.

    Get-Foo
    {
        ...............
        ...............
        ...............
    }

그러나 이것은 작동하지 않습니다. 파서는 두 가지 진술을 보게 될 것입니다. 첫 번째는 Get-Foo두 번째는 스크립트 블록입니다. 대신에 나는 다음과 같이 쓴다.

    Get-Foo {
        ...............
        ...............
        ...............
    }

줄 연속 문자 (`)를 사용할 수는 있지만 코드를 읽기 어렵고 버그가 발생합니다.

이 경우 열린 괄호가 이전 줄에 있어야하므로 모든 곳에서 해당 패턴을 따릅니다.

    if (조건) {
        .....
    }

주 것을 if파서가 스크립트 블록에 대한 다음 줄에 보이는 것, 그래서 문은, 언어의 문법에 스크립트 블록을 필요로하지만 일관성을 위해, 나는 같은 줄에 열린 중괄호를 유지한다.

마찬가지로 긴 파이프 라인의 경우 파이프 문자 ( |) 다음에 나옵니다 .

    $ project.Items |
        ? {$ _. Key -eq "ProjectFile"} |
        % {$ _. Value} |
        % {$ _. EvaluatedInclude} |
        % {
            .........
        }


답변

cristobalito의 답변 을 확장하려면 :

나는 당신이 명령 줄에 대해 이야기하고 있다고 가정합니다-그것이 스크립트에 있다면, 줄 바꿈은 명령 구분 기호로 작용합니다.

명령 행에서 세미콜론 ‘;’을 사용하십시오.

예를 들면 다음과 같습니다.

명령 행에서 PowerShell 스크립트에 서명하십시오. 줄 바꿈이 없습니다.

powershell -Command "&{$cert=Get-ChildItem –Path cert:\CurrentUser\my -codeSigningCert ; Set-AuthenticodeSignature -filepath Z:\test.ps1 -Cert $cert}


답변

PowerShell 및 PowerShell ISE에서는 각 줄 끝에 Shift+ 를 사용 Enter하여 여러 줄을 편집 할 수 있습니다 (표준 백틱 대신 `).


답변

문자열을 여러 줄로 분리하려는 경우 “+”를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

$header =    "Make," +

             "ComputerName," +

             "Model," +

             "Windows Version"

다음과 같이 보일 것입니다 :

$header = "Make,ComputerName,Model,Windows Version"


답변

명령 줄에 대해 이야기하고 있다고 가정합니다. 스크립트에 있으면 줄 바꿈이 명령 구분 기호로 작동합니다.

명령 행에서 세미콜론 ‘;’을 사용하십시오.