여러 줄 명령어 입력 방법
PowerShell 명령줄을 여러 줄로 분할할 수 있습니까?
Visual Basic)을 할 수 ._
를 클릭하여 다음 줄에 있는 명령을 계속합니다.
공백 뒤에 굵은 액센트(backtick)를 사용할 수 있습니다.
Get-ChildItem -Recurse `
-Filter *.jpg `
| Select LastWriteTime
단, 이는 위와 같은 경우에만 필요합니다.통상은, 그 시점에서 통사적으로 명령어를 완료할 수 없는 경우, 자동 행의 계속이 표시됩니다.여기에는 새로운 파이프라인 요소의 시작이 포함됩니다.
Get-ChildItem |
Select Name,Length
그 이후로는 문제없이 동작할 것이다.|
다른 파이프라인 요소가 없으므로 명령을 완료할 수 없습니다., 이 직접 .
$x=1..5
$x[
0,3
] | % {
"Number: $_"
}
와슷비 the the the the the similar와 비슷해요.|
콤마는 일부 컨텍스트에서도 기능합니다.
1,
2
단, JavaScript의 자동 세미콜론 삽입과 마찬가지로 줄 바꿈이 유효한 문 앞에 있기 때문에 다음과 같이 끊어지는 경우가 있습니다.
return
5
동작하지 않습니다.
마지막으로, 문자열(모든 종류의 문자열)은 한 줄 이상으로 확장될 수도 있습니다.
'Foo
bar'
그러면 줄 바꿈도 문자열 안에 포함됩니다.
뒷 체크 표시와 줄 바꿈 사이에 문자가 없어야 한다는 것을 방금 알았습니다.공백이 있어도 명령어는 동작하지 않습니다.
대부분의 C-like 언어에서는 코드를 읽기 쉬운 곳에 교정기를 설치하려고 합니다.
PowerShell의 파서는 스테이트먼트가 완전하지 않은 것을 인식하고 다음 행을 찾습니다.예를 들어 옵션 스크립트 블록 매개 변수를 사용하는 cmdlet을 가정해 보겠습니다.
Foo {..........}
스크립트 블록이 매우 긴 경우 다음과 같이 쓸 수 있습니다.
겟푸{............... ............... ............... }
그러나 이 방법은 작동하지 않습니다. 이데올로기 때문에 번째는 the the the입니다.Get-Foo
두 번째는 스크립트 블록입니다.신음음하다
Get-Foo {............... ............... ............... }
줄 바꿈 문자를 사용할 수도 있지만, 읽기 어려운 코드가 되어 버그를 불러옵니다.
이 경우 오픈브레이스가 앞줄에 있어야 하기 때문에 이 패턴을 따릅니다.
(조건) {..... }
:
if
스테이트먼트에는 언어 문법에 스크립트블록이 필요하기 때문에 파서는 스크립트블록의 다음 행을 검색하지만 일관성을 위해 오픈브레이크는 같은 행에 둡니다.
파이프라인의 파이프 문자, 파이프 문자, 파이프 문자, 문자) 에 끊습니다.|
$프로젝트아이템 |? { $_.키 - eq "Project File" |% { $_.값 } |% { $_.평가필포함 } |% {......... }
크리스토발리토의 답변을 자세히 설명하자면:
명령줄에 대해 말하고 있는 것 같습니다.스크립트에 있는 경우 new-line >이 명령 딜리미터로 동작합니다.
명령줄에서 세미콜론 ';'를 사용합니다.
예를 들어 다음과 같습니다.
명령줄에서 PowerShell 스크립트에 서명합니다.줄 바꿈은 없습니다.
powershell -Command "&{$cert=Get-ChildItem –Path cert:\CurrentUser\my -codeSigningCert ; Set-AuthenticodeSignature -filepath Z:\test.ps1 -Cert $cert}
PowerShell 및 PowerShell ISE에서는 (표준 백틱 대신) 각 줄의 끝에 +를 사용할 수도 있습니다.`
를 참조해 주세요.
모서리 케이스만 여기에 추가해 주세요.그러면 5분이 절약될 거예요.액션 체인을 사용하는 경우는, 행의 마지막에 「」를 붙이고, 그 뒤에 「」(뒤로)를 공백으로 남겨 둘 필요가 있습니다.난 이걸 힘들게 알아냈어요.
$yourString = "HELLO world! POWERSHELL!". `
Replace("HELLO", "Hello"). `
Replace("POWERSHELL", "Powershell")
쓰세요.`
on 명령어
문자열을 여러 줄로 구분하려는 경우 "+"를 사용할 수 있습니다.예를 들어 다음과 같습니다.
$header = "Make," +
"ComputerName," +
"Model," +
"Windows Version"
다음과 같이 됩니다.
$header = "Make,ComputerName,Model,Windows Version"
나는 하는 것으로 시작했다.
if ($true) {
"you can write multiple lines here, and the command doesn't run untill you close the bracket"
"like this"
}
최근에 알게 된 건
&{
get-date
"more stuff"
}
이것은 오래된 기둥이기 때문에, 여기 현대적인 방법이 있습니다.
파워셸을하지 않는 회선을 은 powershell입니다.pipe
줄의 선두에
주의: 명령어는 일부 행이 코멘트 아웃되어도 중단되지 않습니다.이것은 명령줄에서 훌륭합니다.
> Get-ChildItem -path 'c:\' -Depth 1
| Sort-Object LastWriteTime
# | Sort-Object Length -Descending
| Select-Object -First 3 -Skip 3
| Foreach-Object {
$_.Name, $_.Length | Join-String -Separator ' = '
}
출력:
explorer.exe = 4826160
procexp.old.exe = 2925760
RtlExUpd.dll = 2839488
Windows Powershell (버전 < 6 )
유감스럽게도 Windows powershell은 지원하지 않습니다.많은 대안들이 위에 링크되어 있다.백틱을 완전히 제거할 수 있습니다 : 2017/07/bye-backtick-natural-line
명령줄에 대해 말씀하시는 것 같습니다.스크립트에 있는 경우 새 행이 명령 딜리미터 역할을 합니다.
명령줄에서 세미콜론 ';'를 사용합니다.
- 세미콜론 사용
;
지휘를 분리하다 - 이중 백슬래시 교체
\\
백슬래시에\
. - 사용하다
"'
safe address를 'PATH'와 같은 스위치명령어로 전달합니다.
이 ps1 명령어는 install local pfx certificate 입니다.
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"
파이프, 대괄호, 괄호, 연산자, 점 등 여러 가지 방법으로 powershell에서 행을 계속 사용할 수 있습니다.쉼표를 사용해도 마찬가지입니다.여기 블로그가 있습니다.https://get-powershellblog.blogspot.com/2017/07/bye-bye-backtick-natural-line.html
foreach와 같은 명령 뒤에 바로 계속할 수 있습니다.
$scriptBlock = [Scriptblock]::Create(@'
echo 'before'
ipconfig /all
echo 'after'
'@)
Invoke-Command -ComputerName AD01 -ScriptBlock $scriptBlock
Windows 터미널(powershell 프로파일)에서는Shift-Enter
난 괜찮아.
PS C:\xxx2021> Get-ChildItem -Include *remote* -Recurse |
>> Sort-Object -Property LastWriteTime -Descending |
>> Select-Object LastWriteTime, Name -First 25
LastWriteTime Name
------------- ----
12/5/2021 5:04:02 PM remote-control-car-BatteryPack-Number-2021-12-03.pdf
PS C:\xxx2021>enter code here
언급URL : https://stackoverflow.com/questions/3235850/how-to-enter-a-multi-line-command
'programing' 카테고리의 다른 글
설치된 모든 NuGet 패키지를 나열하려면 어떻게 해야 합니까? (0) | 2023.04.23 |
---|---|
Server.Transfer vs.대답.리다이렉트 (0) | 2023.04.23 |
특정 확장자를 가진 모든 파일을 루프합니다. (0) | 2023.04.19 |
텍스트 파일에서 ${} 자리 표시자를 바꾸려면 어떻게 해야 합니까? (0) | 2023.04.19 |
WPF에서 수식자 키 상태를 검출하려면 어떻게 해야 합니까? (0) | 2023.04.19 |