여러 줄 명령을 입력하는 방법
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"
명령 줄에 대해 이야기하고 있다고 가정합니다. 스크립트에 있으면 줄 바꿈이 명령 구분 기호로 작동합니다.
명령 행에서 세미콜론 ';'을 사용하십시오.
- 세미콜론
;
을 사용하여 명령 분리 - 백 슬래시
\\
에서 이중 백 슬래시 를 교체하십시오\
. "'
" 'PATH'"와 같은 명령을 전환하기 위해 안전한 주소를 전달하는 데 사용하십시오 .
이 ps1 명령은 로케일 pfx 인증서를 설치합니다.
powershell -Command "$pfxPassword = ConvertTo-SecureString -String "12345678" -Force -AsPlainText ; Import-PfxCertificate -FilePath "'C:\\Program Files\\VpnManagement\\resources\\assets\\cert\\localhost.pfx'" Cert:\\LocalMachine\\My -Password $pfxPassword ; Import-PfxCertificate -FilePath "'C:\\Program Files\\VpnManagement\\resources\\assets\\cert\\localhost.pfx'" Cert:\\LocalMachine\\Root -Password $pfxPassword"
$scriptBlock = [Scriptblock]::Create(@'
echo 'before'
ipconfig /all
echo 'after'
'@)
Invoke-Command -ComputerName AD01 -ScriptBlock $scriptBlock
파이프, 괄호, 괄호, 연산자, 점, 쉼표를 사용하여 powershell에서 줄을 계속 유지할 수있는 방법이 너무 많습니다. 여기에 블로그가 있습니다 : https://get-powershellblog.blogspot.com/2017/07/bye-bye-backtick-natural-line.html
foreach 및 if와 같은 진술 후에도 계속 진행할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/3235850/how-to-enter-a-multi-line-command
'Programing' 카테고리의 다른 글
파이썬에서 '//'를 갖는 이유는 무엇입니까? (0) | 2020.02.27 |
---|---|
jQuery를 사용하여 AJAX 요청에 헤더 추가 (0) | 2020.02.27 |
JavaScript / jQuery DOM 변경 리스너가 있습니까? (0) | 2020.02.27 |
curl 명령 행을 사용하여 XML 파일 전송 / 포스트 (0) | 2020.02.27 |
unique_ptr 인수를 생성자 또는 함수에 어떻게 전달합니까? (0) | 2020.02.27 |