[PowerShell] 자동화에 꼭 필요한 Powershell 명령어 모음

파워쉘 설명서 홈페이지화면

저는 좀 게으른 편입니다.

운용자는 반복작업이 많습니다. 업무용 PC에 대한 보안 설정을 하거나, 일괄적으로 스크립트를 동작시켜야 할 때가 더러 있습니다. 이 때 방법은 2가지입니다. 하나는 전통적으로 일일히 운용콘솔 하나 하나 반복작업을 하는 것이고, 또 하나는 PowerShell 같은 강력한 도구를 활용하는 것입니다.

PowerShell은 나온지 벌써 15년이 넘었고, (윈도우 한정) 강력한 도구로 자리매김하고 있습니다. 버전은 7.x까지 출시되었고 리눅스용 버전도 애저녁에 나왔으니 한번 써볼 만 합니다. 지금부터는 Powershell에서 꼭 필요한 기능 몇 가지를 소개하고자 합니다. 이 글은 자신이 기초적인 개발 실력은 가지고 있는데 Powershell을 완전히 처음 다루시는 분들께(사실은 발등에 불 떨어진 분들께) 유용한 길라잡이가 될 것입니다.

빠르게 알아보기

주석 처리하기

PowerShell에서 주석처리는 매우 간단합니다. #만 붙여주면 됩니다.

# 이렇게 주석을 쓰면 됩니다.

Print 하기

Print는 이렇게 하면 됩니다. 다양한 옵션이 있는데요 자세한 내용은 이 링크를 참조하세요.

Write-Output "안녕하세요, 파워쉘에서는 이렇게 print-out 합니다."

현재 경로 받아오기

현재 경로를 받아오는 방법은 2가지 option이 있는데요. 하나씩 소개해드리겠습니다.

1) 첫번째 방법
PS C:\Users\StartSomething> Get-Location

Path
----
C:\Users\StartSomething

이렇게 하는 현재 경로를 표시하는 방법이 있고…. (근데 아마 이런걸 원하지 않을겁니다^^)

2) 두번째 방법 (아마 원하시는 내용은 이런 방법일거에요!)
PS C:\Users\StartSomething> $PWD.ProviderPath
C:\Users\StartSomething

이런 방법을 통해 쉽게 경로를 표시할 수 있습니다. 현재 경로 받아오는 방법에 대해선 이 곳을 참고하세요~

파일 실행하기

파일을 실행할 때 일반적으로 -ArgumentList 에 /s-silent 를 넣어주면 대화식 설치 화면 대신 긍정적인 버튼(?) 을 눌러줍니다~ 자세한 내용은 이 곳을 참조하세요!

Start-Process -Wait -FilePath 'C:\Users\StartSomething\Install.exe' -ArgumentList '-silent' -PassThru

번외로 현재 폴더 기준으로 파일을 실행하는 방법을 알려드릴게요(와우)

$filepath = $PWD.ProviderPath + '\Install.exe'
Start-Process -Wait -FilePath $filepath -ArgumentList '-silent' -PassThru

위와 같이 실행시키면 아주 간단하게 해결가능합니다(이쯤되면 감이 잡히시나요?)

파일 다운로드하기

파워쉘은 다운로드 기능도 매우 쉽게 해결할 수 있습니다! 이렇게 해보세요~

자세한 명령어는 이 곳을 참조하시구요~

# 다운로드 받을 URL
$url = 'http://150.0.0.0/Install.exe'

# 파일이 저장될 경로 + 파일명
$destination = 'C:\temp\Install.exe'

# 파일 다운로드 실행
Invoke-WebRequest -Uri $url -OutFile $destination

파일을 현재 경로에 받게 하려면 어떻게 해야 하는지 혹시 감 잡으셨나요? 네, 맞습니다. 여러분이 생각하는 그대로입니다.

# 이렇게 하면 현재 경로에 받을 수 있어요~
$destination = $PWD.ProviderPath + '\Install.exe'
Invoke-WebRequest -Uri $url -OutFile $destination

정리

복잡한 명령어는 사실 필요 없습니다. 제가 소개한 5개 정도의 명령어만 있다면 기초적인 PowerShell Automation 을 할 수 있습니다!

읽어주셔서 감사합니다, 질문은 언제든 환영입니다 🙂

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다