PowerShell 스크립트 자동화를 활용하여 작업을 간소화하는 방법
PowerShell은 Windows 시스템에서 프로세스를 제어하고 작업을 자동화하는 등 다양한 작업을 수행할 수 있는 매우 강력한 도구입니다.백업, 업데이트 또는 정기 유지 관리와 같은 작업을 자동으로 실행하려는 경우 PowerShell을 사용하면 됩니다.하지만 Windows에는 실행 정책이라는 보안 기능이 있어 서명되지 않았거나 인터넷에서 가져온 스크립트 파일의 실행을 차단합니다.이는 마치 문지기처럼 작동하여 사용자가 직접 허용하지 않는 한 실행되지 않도록 합니다.특히 매번 “예”를 클릭하거나 설정을 수동으로 변경하지 않고 자동화를 실행하려는 경우 이러한 정책은 상당히 불편할 수 있습니다.
자, 핵심은 이렇습니다.먼저 실행 정책을 낮춘 다음 일정을 설정해야 합니다.그렇지 않으면 스크립트가 실행되지 않거나 차단되어 매우 불편할 수 있습니다.스크립트를 자동화하는 방법은 여러 가지가 있습니다.기술에 익숙하지 않은 분들은 작업 스케줄러 GUI를 사용하거나, cmdlet 사용에 능숙한 분들은 PowerShell을 직접 사용할 수 있습니다.어떤 방법을 사용하든, 아래 단계를 따르면 번거로움 없이 (또는 최소한 번거로움을 줄이기 위해) 스크립트를 자동으로 실행할 수 있을 것입니다.다만, 보안 정책에 따라 관리자 권한이나 추가 권한이 필요할 수도 있다는 점을 유의하세요.
PowerShell 스크립트를 자동화하는 방법은 무엇인가요?
스크립트가 실행될 수 있도록 실행 정책을 먼저 수정하세요.
대부분의 경우 스크립트 실행을 차단하는 것은 바로 이 설정입니다.좀 이상하게 들릴 수도 있지만, 실행 정책이 ‘제한됨’으로 설정되어 있으면(대부분 기본값임) PowerShell은 서명되지 않은 스크립트를 실행하지 않습니다.따라서 사용자 범위에 한해서만 이 보안 설정을 완화해야 합니다.이렇게 하려면 관리자 권한으로 PowerShell을 열고 (PowerShell을 검색한 다음 마우스 오른쪽 버튼을 클릭하고 ‘ 관리자 권한으로 실행 ‘을 선택 ) 다음 명령을 입력합니다.
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
이 기능을 사용하면 서명되었거나 로컬에서 생성된 스크립트를 실행할 수 있습니다.일부 시스템에서는 정책을 변경하시겠습니까?라는 메시지가 표시될 수 있는데, ‘예’를 선택하면 됩니다.스크립트가 인터넷이나 신뢰할 수 없는 출처에서 가져온 경우, 이 설정을 변경해야 합니다 Unrestricted.다음 명령어를 사용하세요.
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
여기서 주의할 점이 있습니다.윈도우는 늘 그렇듯 필요 이상으로 복잡하게 만들어 놓았기 때문입니다.Unrestricted모든 스크립트 실행을 허용하도록 설정하게 되면 보안 위험이 발생할 수 있으니 주의하십시오.
방법 1: 작업 스케줄러 사용
대부분의 경우, 특히 클릭하고 잊어버리고 싶을 때 가장 쉬운 방법입니다.스크립트를 작성할 필요 없이 마우스 클릭만으로 작업 스케줄러를 실행할 수 있습니다.실행 창을 열고 taskschd.mscWin + R 를 입력하세요.그러면 작업 스케줄러 에 접근할 수 있습니다.작업 스케줄러 라이브러리를 마우스 오른쪽 버튼으로 클릭하고 기본 작업 만들기 또는 추가 옵션을 보려면 작업 만들기를 선택하세요.
- 작업 이름을 지정하고 간단한 설명(예: ‘PowerShell 스크립트 자동 실행’)을 추가하세요.일반 탭에서 필요한 경우 로그인 여부와 관계없이 실행되도록 설정합니다.스크립트에 관리자 권한이 필요한 경우(대부분의 경우 필요함) ‘최고 권한으로 실행’을 선택해야 할 수도 있습니다.
- 실행 시점을 설정하세요.매일, 시작 시, 로그인 시 등 원하는 대로 설정할 수 있습니다.[새로 만들기] 를 클릭하고 원하는 일정을 선택한 다음 [확인]을 클릭하세요.
- 다음으로, 작업 탭으로 이동하여 새로 만들기를 클릭한 다음 프로그램 시작을 선택합니다.프로그램/스크립트 상자에 를 입력하고
powershell인수 추가에 를 입력합니다-File "full\path\to\your\script.ps1".예를 들면 다음과 같습니다-File "D:\Scripts\backup.ps1".경로와 파일 이름이 올바른지 확인하십시오.그렇지 않으면 실행되지 않습니다. - 필요에 따라 조건이나 설정과 같은 다른 설정을 조정한 다음 확인을 클릭하십시오.완료되었습니다.
이게 전부입니다.이 설정을 사용하면 스크립트가 예약된 간격으로 또는 특정 트리거에 따라 실행됩니다.이렇게 설정하면 수동으로 실행할 필요도 없고, 잊어버릴 염려도 없이 자동화가 가능해집니다.
방법 2: PowerShell을 통해 직접 자동화
스크립팅에 관심이 있고 PowerShell 자체에서 모든 작업을 수행하고 싶다면 이 방법이 적합합니다.다소 복잡하지만 더 유연하고 반복 가능합니다.먼저 트리거 개체를 생성해야 합니다.
$Trigger = New-ScheduledTaskTrigger -Once -At 4am
이렇게 하면 작업이 오전 4시에 한 번 실행되도록 설정됩니다.다른 트리거를 사용하려면 또는 -Once로 변경하세요.예를 들어, 3일에 한 번씩 매일 실행되도록 설정할 수 있습니다.-Daily-AtStartup
$Trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 3 -At 9am
다음으로, 트리거가 작동했을 때 실행될 동작, 즉 액션을 정의합니다.바로 이 부분에서 New-ScheduledTaskAction가 사용됩니다.
$Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-File `"`"
`를 바꾸는 것을 잊지 마세요.
$User = "YourDomain\YourUser"
마지막으로, 에 작업을 등록하세요 Register-ScheduledTask.예시:
Register-ScheduledTask -TaskName "My PowerShell Auto" -Trigger $Trigger -User $User -Action $Action
이렇게 하면 PowerShell 내에서 모든 것을 완벽하게 자동화할 수 있으므로, 많은 부분을 사용자 지정하거나 설정 스크립트를 자동화할 때 매우 유용합니다.다만, 일부 명령, 특히 관리자 권한으로 실행되는 작업을 생성하는 경우에는 관리자 권한이 필요할 수 있다는 점에 유의하세요.
한 환경에서는 처음 시도했을 때 전체 과정이 실패했습니다.아마도 보안이나 권한 문제였던 것 같습니다.재부팅을 하거나 PowerShell을 관리자 권한으로 실행했더니 정상적으로 작동했습니다.때로는 사용자 권한이나 정책을 조정해 봐야 제대로 작동하는 경우가 있습니다.
이 모든 것이 준비되면 추가 클릭 없이 PowerShell 스크립트를 매일, 시작 시 또는 로그인 시 등 원하는 시간에 실행하는 것이 매우 간단합니다.처음에는 약간의 준비 작업만 필요하지만, 그 후에는 순조롭게 진행됩니다.