Powershell Script에 포함된 Parameter 값을 강제적으로 입력하도록 화면에 보여주기


  • Powershell script 파일 안에 Parameter를 사용하는 경우가 많다. 이런 경우에 해당 Parameter를 꼭 사용하도록 명기하는 것이 필요하다. 이렇게 하면 사용자의 입력 실수를 방지할 수 있다.
  • 우리가 주로 보고자 하는 작업은 CPU를 많이 사용하거나 Physical Memory(pm)를 많이 사용하는 프로세스를 확인하고자 한다.
    • Get-Process | Sort-Object -Property cpu -Descending | Select-Object -First 5
    • Get-Process | Sort-Object -Property pm -Descending | Select-Object -First 5
  • 그래서 이것을 스크립트로 만들어서 사용자가 cpu, pm, 수량을 입력하도록 하고자 한다.
    먼저 다음과 같이 Powershell sciprt 파일을 생성해 본다.
    • Param (
      $item,
      $amount
      )
      Get-Process | Sort-Object -Property $item -Descending | Select-Object -First $amount

    • 이렇게 하여 test.ps1 파일로 저장한다.
  • 이제 test.ps1 파일을 다음과 같이 실행하여 본다. 모두 오류가 발생하게 된다. 그 이유는 반드시 2개의 Parameter를 사용해야 하는 Powershell Script인데, 사용자가 그것을 모르고 실행하였기 때문이다.
    • .\test.ps1
    • .\test.ps1 cpu
    • .\test.ps1 -item cpu
  • 이제는 이 스크립트가 어떻게 구성되어 있는지 알고 있어서 다음과 같이 필요한 parameter 값을 입력하여 실행하여 본다. 모두 성공이다.
    • .\test.ps1 cpu 5
    • .\test.ps1 -item cpu -amount 5
  • 자, 그렇다면 사용자가 스크립트에 어떤 매개변수(parameter)가 있는지 모를 경우를 대비하여 Parameter를 강제로 사용하도록 만들어 본다.
    • Param (
      [Parameter(Mandatory=$true)]
      $item,
      [Parameter(Mandatory=$true)]
      $amount
      )
      Get-Process | Sort-Object -Property $item -Descending | Select-Object -First $amount

    • 주의 사항은 Parameter 마다 각각 [Parameter(Mandatory=$true)]을 입력해야 한다는 사실이다.

       
  • 이렇게 한 후 test.ps1 파일을 다음과 같이 실행을 하면 콘솔 화면에 item 및 amount를 입력하라는 항목이 강제로 나타난다. 그러면 사용자는 적절한 값을 입력해주면 되는 것이다.


    • 물론 이렇게 작업을 해도 위에서와 같이 .\test.ps1 pm 8로 입력하거나 .\test.ps1 -item pm -amount 5로 입력해도 정상적인 결과가 나오게 된다.         

     
     

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s