programing

여러 줄 명령어 입력 방법

cafebook 2023. 4. 23. 11:26
반응형

여러 줄 명령어 입력 방법

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

명령줄에 대해 말씀하시는 것 같습니다.스크립트에 있는 경우 새 행이 명령 딜리미터 역할을 합니다.

명령줄에서 세미콜론 ';'를 사용합니다.

  1. 세미콜론 사용;지휘를 분리하다
  2. 이중 백슬래시 교체\\백슬래시에\.
  3. 사용하다"'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

반응형