2014. 9. 24. 17:38

  • Powershell Script를 실행할 때마다 다른 컴퓨터 이름을 사용하고자 할 때 스크립트에 Param을 사용하면 유용하다
  • 만약에 컴퓨터의 OS 정보를 확인하고자 할 때는 다음과 같이 할 수 있다.
    Gwmi Win32_OperatingSystem | Select-Object BuildNumber, Caption, ServicePackMajorVersion

    Gwmi Win32_OperatingSystem -ComputerName server2 | Select-Object BuildNumber, Caption, ServicePackMajorVersion


  • 그런데 여기서 로컬 컴퓨터가 아닌 원격 컴퓨터의 정보를 알아 내기 위해서는 이렇게 긴 것을 다 쓰고 컴퓨터 이름만 바꿔서 써야 한다. 너무 힘들다. 그래서 스크립트를 만드는 것이다
  • 스크립트를 만들어서 저장할 때 .ps1 파일(pcname2.ps1)로 저장한다. 그런데 이 내용을 저장하면 하나의 컴퓨터 정보만 얻을 수 밖에 없다. 그래서 원격에 있는 컴퓨터의 정보를 얻기 위해서 Param ( )을 사용한다.
     



    여기서 $PC는 매개변수(Parameter)이다. 그러므로 스크립트 파일을 생성할 때 Param ( )을 사용한다는 것은 바로 해당 스크립트에 parameter를 사용하겠다는 것이고, 그 결과 다양하게 응용하겠다는 뜻이다.
     

  • 여기서 localhost라고 한 것은 어떤 컴퓨터에서 이 스크립트를 실행을 하든 컴퓨터 이름을 입력하지 않을 때 기본적으로(by default) 자신의 컴퓨터라는 것을 말하는 것이다.
    C:\MyScripts\pcname2.ps1
  • 이제는 이 스크립트 파일을 실행할 때 반드시 컴퓨터 이름을 입력하도록 해보자.
    C:\MyScripts\pcname2.ps1 server1
    (여기서 parameter를 사용하지 않더라도 제일 먼저 사용한 매개변수는 pc 이므로, pc 매개변수에 대한 값으로 server1을 인식한 것이다.)
    C:\MyScripts\pcname2.ps1 
    -PC
    server1 
    (Param에서 사용한 $pc는 parameter 이름이다. 그래서 여기서 -PC로 입력한 후 server1을 입력한 것이다.)
    C:\MyScripts\pcname2.ps1 -P
    server1 
    (Param에서 사용한 parameter 중에서 p로 시작하는 것은 pc 밖에 없기 때문에 이렇게 해도 된다)
     

  • 즉, 이렇게 해야지 원하는 컴퓨터의 정보를 정확하게 얻을 수 있다. 이렇게 하려면 사용자에게 이 스크립트를 실행하는 방법을 알려주어야 하는 번거로움이 있다. 이것을 해결하는 것이 다음과 같이 Read-Host를 이용하는 것이다. 이렇게 하면 해당 스크립트를 실행하여 자동으로 화면(screen, host)에 창이 Popup되기 때문에 사용자가 원하는 컴퓨터 이름을 입력하게 되는 것이다.
     


     
     


    출처 : http://cloudsns.wordpress.com/category/microsoft/powershell/page/8/

Posted by pegasuss