2010. 7. 22. 09:00


안녕하세요? 윈디안입니다!

파워쉘 스냅인 중 흥미로운 녀석이 있어 소개해 드리려 합니다.

WASP(Windows Automation Snapin for Powershell)
http://wasp.codeplex.com/

이 녀석은 무엇일까요?

이름에도 나와 있듯이 자동화(Automation)를 구현할 수 있는 스냅인입니다.

그럼 어떻게 자동화를 구현할까요?

AutoHotkey라는 프로그램 들어 보신적 있나요? 매크로를 이용한 자동화 프로그램입니다.
저는 이 것과 유사하다고 느꼈습니다.

지원하는 Cmdlet은 아래와 같습니다.


  • Select-Window - pick windows by process name or window caption (with wildcard support)
  • Select-ChildWindow - pick all owned windows of another window (eg: dialogs, tool windows)
  • Select-Control - pick controls (children) of a specific window, by class and/or name and/or index (with wildcard support) -- NOTE: the "Window" can be specified as "-Window 0" to get all parentless windows, which includes windows, dialogs, tooltips, etc... With -Window 0 this returns a true superset of the Select-Window output.
  • Send-Click - send mouse clicks (any button, with any modifier keys)
  • Send-Keys - Windows.Forms.SendKeys lets you send keys ... try this: Select-Window notepad | Send-Keys "%(ea)Testing{Enter}{F5}" (and for extra fun, try it with multiple notepad windows open).
  • Set-WindowActive - yeah, just activates the window
  • Set-WindowPosition - set any one of (or all of) top, left, width, height on a window ... or maximize/minimize/restore
  • Get-WindowPosition - get the position (kind-of redundant, actually, since the Window object has it's position as a property)
  • Remove-Window - closes the specified window
  • Cmdlet을 보시면 느낌이 확 오시죠? 윈도우를 선택, 활성화,창크기 변경, 창 닫기, Keyboard,Mouse Action 등을 할 수 있습니다.

    http://wasp.codeplex.com/releases/22118/download/55849

    압축파일을 다운로드 하면 파일이 3개 있는데 이 중 Install.ps1을 파워쉘에서 실행하시면 됩니다.
    저는 -Force 스위치를 사용하여 설치했습니다.

    PS C:\Users\windian7.SDS\Downloads\WASP\WASP> dir


        디렉터리: C:\Users\windian7.SDS\Downloads\WASP\WASP


    Mode                LastWriteTime     Length Name
    ----                -------------     ------ ----
    -a---      2009-01-20  오전 12:50       2570 Install.ps1
    -a---      2009-01-20  오전 12:53        520 UnInstall.ps1
    -a---      2009-01-21  오전 11:13      43008 WASP.dll


    PS C:\Users\windian7.SDS\Downloads\WASP\WASP> .\Install.ps1 -force
    You're running PowerShell 2.0, so you don't need to Install this as a PSSnapin,
    you can use Import-Module (or Add-Module in CTP2) to load it.  If you still want
     to install it as a PSSnapin, re-run this script with -Force
    Microsoft (R) .NET Framework Installation utility Version 2.0.50727.4927
    Copyright (c) Microsoft Corporation. All rights reserved.


    트랜잭트 설치를 실행하고 있습니다.

    설치의 Install 단계를 시작하고 있습니다.
    C:\Users\windian7.SDS\Downloads\WASP\WASP\WASP.dll 어셈블리의 진행 상황을 보려면
     로그 파일 내용을 검토하십시오.
    파일은 C:\Users\windian7.SDS\Downloads\WASP\WASP\WASP.InstallLog 위치에 있습니다
    .
    어셈블리 'C:\Users\windian7.SDS\Downloads\WASP\WASP\WASP.dll'을(를) 설치하고 있
    습니다.
    영향을 받는 매개 변수:
       assemblypath = C:\Users\windian7.SDS\Downloads\WASP\WASP\WASP.dll
       logfile = C:\Users\windian7.SDS\Downloads\WASP\WASP\WASP.InstallLog
       logtoconsole =

    Install 단계는 완료되었으며 Commit 단계를 시작하고 있습니다.
    C:\Users\windian7.SDS\Downloads\WASP\WASP\WASP.dll 어셈블리의 진행 상황을 보려면
     로그 파일 내용을 검토하십시오.
    파일은 C:\Users\windian7.SDS\Downloads\WASP\WASP\WASP.InstallLog 위치에 있습니다
    .
    어셈블리 'C:\Users\windian7.SDS\Downloads\WASP\WASP\WASP.dll'을(를) 커밋하고 있
    습니다.
    영향을 받는 매개 변수:
       assemblypath = C:\Users\windian7.SDS\Downloads\WASP\WASP\WASP.dll
       logfile = C:\Users\windian7.SDS\Downloads\WASP\WASP\WASP.InstallLog
       logtoconsole =

    Commit 단계가 완료되었습니다.

    트랜잭트 설치가 완료되었습니다.

    CommandType     Name                            Definition
    -----------     ----                            ----------
    Cmdlet          Get-WindowPosition              Get-WindowPosition [-Window]...
    Cmdlet          Remove-Window                   Remove-Window [-Window] <Win...
    Cmdlet          Select-ChildWindow              Select-ChildWindow [-Window]...
    Cmdlet          Select-Control                  Select-Control [[-Index] <In...
    Cmdlet          Select-Window                   Select-Window [[-ProcessName...
    Cmdlet          Send-Click                      Send-Click [[-Left] <Int32>]...
    Cmdlet          Send-Keys                       Send-Keys [-Keys] <String> [...
    Cmdlet          Set-WindowActive                Set-WindowActive [-Window] <...
    Cmdlet          Set-WindowPosition              Set-WindowPosition [[-Left] ...
    To load the Windows Automation Snapin in the future, you need to run:
    Add-PSSnapin WASP

    You can also add that line to your Profile script to load it automatically.



    설치 완료 후 다음 파워쉘 실행 시 "Add-PSSnapin WASP"을 통해서 스냅인을 로드해야 Cmdlet을 사용할 수 있습니다.
    (프로필을 통해서 자동으로 로드 되도록 할 수도 있습니다.)


    그럼 예제를 보겠습니다.

    ## 윈도우를 두개 실행합니다.
    notepad.exe
    explorer.exe


    ## 윈도우 리스트를 출력합니다.
    Select-Window | ft –auto

    ## 노트패드를 활성화합니다.
    Select-Window notepad* | Set-WindowActive

    ## 탐색기를 종료합니다.
    Select-Window explorer | Select -First 1 | Remove-WIndow

    ## 노트패드를 여러개 실행합니다.
    notepad; notepad; notepad; notepad;

    ## 노트패드 위치 변경하기
    $i = 1;$t = 100; Select-Window notepad | ForEach { Set-WindowPosition -X 20 -Y (($i++)*$t) -Window $_ }

    ## 노트패드에 텍스트를 입력합니다.
    Select-Window notepad | Send-Keys "테스트입니다!!!"

    ## 첫번째 notepad를 ALT+F4로 종료합니다.
    Select-Window notepad | Select -First 1 | Send-Keys "%{F4}"

    ## "Remove-Window" Cmdlet을 통해 notepad를 종료합니다. 키 명령을 통해서 저장하지 않고 종료합니다.
    Select-Window notepad | Select -First 1 | Remove-Window -Passthru | Select-ChildWindow | Send-Keys "n"

    ##  ProcessID 파이프를 통해 Kill 명령으로 notepad를 종료합니다.
    Select-Window notepad | Select -First 1 | kill

     

    이렇게 파워쉘을 통해서 윈도우를 컨트롤 할 수 있습니다.
    응용하기에 따라 유용한 도구가 될 것 같습니다.

    그럼 다음 포스팅에서 뵙겠습니다.

    PS. 스냅인 사용을 위해서는 Add-PSSanpin 명령을 통해 해당 스냅인을 로드해야 합니다. 기억하세요.

    Posted by 알 수 없는 사용자
    :
    2010. 7. 21. 09:21

    10000wo입니다.

    power shell에서 파일 출력을 컨트롤 하는 옵션(Out-File)을 보고 다른 방법도 있어 글을 올립니다.
    리다이렉션을(Redirection) 이용하는 방법인데요..

    예를들어 다음과 같습니다.

    위 화면은 hosts 파일의 내용을 바탕화면에 hosts_bak.txt, hosts_bak.doc 라는 파일로 넣어주는 화면입니다.
    예상한대로 .txt는 메모장 형태로 파일이 만들어지고 .doc는 워드 파일이 생성됩니다.


    조로가 hots_bak파일을 먹어버릴 기새군요;;ㅋㅋ

    반대로 "A < B" 하면 B의 내용을 A에 넣을 수 있게 됩니다. 
    이미 내용이 있는 파일을 새로 만드는 것이 아니라 파일 내용의 끝에서 부터 이어서 쓰려면 "A >> B"  등이 있습니다.

    읽어주셔서 감사합니다.

    'Powershell > 10000wo' 카테고리의 다른 글

    [Power Shell] pstree 사용하기.  (0) 2010.07.20
    Posted by 알 수 없는 사용자
    :
    2010. 7. 20. 21:26

    파워쉘을 이용하여 특정 내용에 대하여 검색 또는 출력 후 검색 내용을 외부 파일로 출력하는 Out-File cmdlet 에 대해 알아 보도록 하겠습니다.

    ex) get-process를 이용하여 현재 사용중인 processname이 iexplore 인 파일만 검색하여 파일로 보관이 필요한 경우 입니다. get-process를 실행시 현재 동작중인 많은 process가 확인이 되어 집니다. (출력되는 내용이 많아 일부만 넣었습니다.)
     

    작업자가 필요한 내용은 processname이 iexplore 에 대한 내용만이 필요한 경우 좀더 효율적으로 데이터 값을 얻기 위하여 특정 조건값으로 출력이 되도록 get-process 이 외에 추가로  -processname iexplore을 추가하여 get-process -processname iexplore 실행 아래와 같이 검색을 원하는 값만이 출력되는 것이 확인 할 수 있습니다.


    자 이제 원하는 값을 얻었습니다.
    해당 내용을 문서또는 파일로 내보내야 합니다.
    어떻게 외부 파일로 내보내기를 할까요??
    Out-File cmdlet 사용하여 출력을 콘솔 창이 아니라 파일로 보낼 있습니다.
    get-process -processname iexplore | Out-File -FilePath d:\processname.txt 을 실행하여 D:에 processname.txt 이름의 텍스트 파일로 내보내기를 하였습니다.


    TIP : Out-File
    cmdlet 사용하여 출력을 콘솔 창이 아니라 파일로보낼 경우 엑셀(csv)등
    MS office에서 지원하는 파일로 내보내기가 가능 합니다.

    허접하지만 최근 유용하게 사용한 Out-File cmdlet에 대하여 알아 보았습니다.
    다음엔 좀더 유용한 정보로 찾아 뵙도록 하겠습니다.
    Posted by 알 수 없는 사용자
    :
    2010. 7. 20. 16:12

    파워쉘 입문인 제가 여러가지 파워쉘 명령들을 보면서 bash shell 명령을 배울때와 비슷하게 무언가 명령이 많은데 이게 뭔지는 알수없고 원하는 내가 원하는 명령은 어떤 commend를 입력해야 하는지 모르는 어둠을 접하게 되었습니다.

    모를때는 역시 이것저것 다 해보는 것이 최고입니다..;;

    파워쉘의 기본 명령은 Get-Process 인데 이 명령은 실행 중인 프로세스를 보여줍니다.
    그리고 Set-Alias 는 명령어의 별칭을(심볼릭 링크?) 만들어 줍니다.

    Alleh~ 저는 bash 명령 중 pstree 라는 명령이 손에 많이 익어 있습니다... pstree는 명령어 그대로 process를 tree형식으로 보여줍니다. Get-Process 와 비슷하군요...

    Get-Process를 pstree로 Alias 걸었습니다.


    그리고 bash의 grep과 비슷한 -processname 이라는 power shell의 매개변수를 발견했습니다.
    Get-Process의 -processname 이라는 매개변수는 출력되는 결과에서 원하는 결과를 찾아줍니다.


    이상으로 power shell에서 pstree사용하기 였습니다.;;ㅋㅋ
    역시 처음배울때는 재미가 있어야 합니다. -_-;

    저만 재미있었다면 죄송합니다. -0-;

    'Powershell > 10000wo' 카테고리의 다른 글

    [Power Shell] 파일 입/출력 리다이렉션  (0) 2010.07.21
    Posted by 알 수 없는 사용자
    :
    2010. 7. 16. 11:42

    안녕하세요 윈디안입니다.

    아마 처음 Windows 2008 서버 코어를 설치하셨던 분들은 한번씩 경험을 하셨을 것 같습니다.
    서버 설치 후 덩그러니 CMD 창만 반기고 있을 때의 당황스러움을 말이죠 ^^;

    Windows 2008 R2에서는 이런 당황스러움과 어려움을 해소해 줄 수 있는 새로운 Tool이 추가되었습니다.
    "SCONFIG.EXE"
    아주 기본적이지만 CMD로 하려면 막막한(...) 그런 것들을 쉽게 할 수 있도록 도와주는 한줄기 빛 같은 고마운 Tool입니다.


    위 이미지가 "Sconfig.exe"를 실행한 화면입니다.

    1. 그룹 변경 및 도메인 조인
    2. 컴퓨터 이름 변경
    3. 관리자 계정 추가
    4. 원격 관리 설정(MMC,PowerShell 사용,관리도구 연결,방화벽 설정)
    5. 윈도우 자동 업데이트 설정
    6. 보안 업데이트 수동 다운로드 및 설치
    7. 원격 데스크톱 설정(RDP)
    8. 네트워크 설정
    9. 날짜/시간 설정
    10. 로그오프
    11. 서버 재시작
    12. 서버 종료
    13. sconfig.exe 종료

    정말 꼭 필요한 기능들이죠.
    원하는 "숫자"를 입력한 후 엔터를 눌러 실행하시면 됩니다.

    저는 파워쉘 설치를 위해 "4"를 입력하였습니다.


    추가 메뉴가 나오네요.
    여기서 2를 선택하여 Windows PowerShell을 사용할 수 있도록 합니다.


    무언가 설치하고 설정합니다.


    설치완료를 위해 재시작이 필요하다고 알립니다.
    뭐 시키는 대로 예(Y)를 눌러 재시작을 해야죠.


    재시작 후 CMD 창에서 "powershell"이라고 입력하면 실행이 됩니다.

    참 쉽죠~ ㅎㅎ

    물론 Server Core에서는 DISM 같은 명령을 이용한 기능를 통해 PowerShell 및 다른 추가 기능을 이용할 수 있습니다.
    여러가지 방법 중 하나이며 R2에서만 사용할 수 있는 쉬운 방법인거죠.

    ServerCore에서 Sconfig을 이용하여 원격 연결을 활성화한 경우 MMC등을 통해서 cmdlet 없이 클라이언트의 GUI툴을 통한 관리가 가능합니다.

    * Remote Server Administration Tools for Windows 7
    http://www.microsoft.com/downloads/details.aspx?FamilyID=7D2F6AD7-656B-4313-A005-4E344E43997D&displaylang=en

    그럼 다음에 뵙겠습니다. ^^;

    TIP. CMD에서 새로운 창으로 명령을 실행하는 경우 작업 관리자를 이용하여 새 창을 여시는 분들이 있는데 그럴 필요 없이 
          "start"라는 명령을 사용하면 새 창으로 CMD,PowerShell을 실행할 수 있습니다.
          "start cmd","start powershell" 이런 식으로 말이죠~

          이건 팁이라고 하기는 좀 그렇지만
          Windows 2008 R2는 64Bit만 지원합니다.
          Windows 7의 Windows VirtualPC로 테스트 VM을 설치하는 경우 VirtualPC가 64Bit를 지원하지 않기 때문에 설치가 되지 않습니다.
          처음에 이 생각을 못하고 DVD가 문제인가 하고 고민했습니다;;

    Posted by 알 수 없는 사용자
    :

    BLOG main image
    Windows Server를 공부 하는 사람들의 팀블로그 by 마성민

    카테고리

    분류 전체보기 (76)
    Windows (2)
    Powershell (56)
    AD (0)
    Exchange (6)
    System Center (9)
    IIS (0)
    SQL (3)
    Sharepoint (0)

    태그목록

    Tistory Cumulus Flash tag cloud by BLUEnLIVE requires Flash Player 9 or better.

    Total :
    Today : Yesterday :