복사 방지 스크립트

레이블이 [PS]인 게시물을 표시합니다. 모든 게시물 표시
레이블이 [PS]인 게시물을 표시합니다. 모든 게시물 표시

2013년 4월 26일 금요일

[PS] PowerShell 3.0의 Help(도움말) 업데이트

출처 : http://powershell.kr/ (이용식 강사님 블로그)

Powershell v2.0에서는 [도움말(Help)]이 로컬 컴퓨터에 Full version으로 설치되어 있지만 Powershell v3.0에서는 로컬 컴퓨터에 도움말(Help)이 간단하게만 설치되어 있다.


  • 그래서 도움말을 Microsoft Website에서 수동으로 다운로드해야 한다. 도움말이 저장되는 위치가 C:\Windows\System32 아래에 설치되기 때문에 반드시 관리자 권한이 있는 계 (Administrator)으로 로그온 하여 설치해야 한다.
  • 도움말을 설치하기 위해서는 2가지 방법이 있다.
    • 인터넷으로부터 직접 설치하기: Update-Help -Force
    • 컴퓨터가 인터넷에 연결되어 있지 않을 때는 로컬 네트워크의 File server로부터 설치하기:
      Update-Help -SourcePath \\FileServer\Help
  • 인터넷에 연결된 컴퓨터에서 사전에 Help 파일들을 다운로드하여 공유하면, 인터넷에 연결되지 않는 컴퓨터들도 미리 다운로드하여 저장하여 공유한 서버에 접속하여 Help 파일을 설치할 수 있  것이다.
  • 인터넷으로부터 Help 파일들을 로컬 컴퓨터로 다운로드하려면 다음과 같이 한다.
    • Md c:\help
    • Net Share Help=c:\help
    • Save-Help -DestinationPath c:\help -Force
  • 이렇게 인터넷으로부터 Help 파일을 다운로드한 후 먼저 자신부터 설치하고 그 다음은 인터넷에 연결되지 않은 컴퓨터들도 도움말을 설치한다.
    • 로컬 컴퓨터에서 설치하기: Update-Help -SourcePath c:\help


      이렇게 Help를 설치한 후 Get-Help -Name Get-Process의 내용을 보면 위의 것과 내용의 양이 차이가 난다는 것을 확연히 알 수 있다.
    • 네트워크에 존재하는 다른 컴퓨터에서 설치하기: Update-Help -SourcePath \\fileserver\help  -Force


  • Help 파일을 DC에서 다운로드하여 저장하는 것과 Domain Member 컴퓨터에서 다운로드하여 저장하는 것의 차이가 있다. Domain Controller가 module 내용이 더 많다. 그러므로 가능하여 Help 파일을 다운로드하는 서버는 DC가 좋다.
  • 정리를 하면, Powershell v3.0에서는 Help가 기본적인 간단한 내용만 있기 때문에 반드시 Full Help를 설치해야 한다. 설치하는 방법은 인터넷에 직접 연결하든가(Update-Help -Force) 아니면
    로컬 네트워크의 파일 서버에 미리 Help를 다운로드(Save-Help -DestinationPath c:\help)한 후 그 서버에 접속하여 Help를 설치한다(Update-Help -SourcePath
    \\fileserver\help)

  • [PS] Windows 7, Powershell 2.0 에서 3.0 업데이트 방법

    사실 아래 두개의 링크에서 확인 후 진행 하면된다.

    설치 패키지 다운로드 링크 (모두 확인 바람)
    http://www.microsoft.com/en-us/download/details.aspx?id=34595

    관련 내용 링크 (모두 확인 바람)
    http://help.outlook.com/ko-kr/140/cc952756.aspx

    하.지.만.!!
    윈도우 7에서 사용하던 기존 2.0에서 업그레이드를 무작정 진행 하기엔 무리가 있었다.

    왜냐고? 아무리 패키지를 다운받아서 설치 버튼을 눌르면

    계속, 독립 실행형 설치 관리자 업데이트 창에서

    "업데이트를 컴퓨터에 적용할 수 없습니다" 라는 메시지만 뜬다.이게 웬일!?

    결국 별별 사이트를 다 찾아보다가. 혹시나 해서.

    .net FrameWork 4.0 (최신) 을 설치 해볼까? 해서 설치 했더니.... 헉! 바로 설치 된다?
    무려 1시간 반동안 헤맸다. (읔! 멍청한!)

    (근데 이부분은 기본적으로 알고 있던 것일까? 일반적으로 윈도우 7을 사용중이면
    분명 프레임워크가 설치 되어 있지 않을것이다(있더라도 1.1) 그 어떤 사이트를 찾아봐도
    프레임 워크가 설치 되어 있어야 한다는 말은 찾을수 없었다.. 무려 50여개 사이트를
    뒤져봐도...)

    반드시 .net FrameWork 설치 되어 있어야 한다. 반드시.ㅠㅠ

    .net FrameWork 4.0 다운로드 링크
    http://www.microsoft.com/ko-kr/download/details.aspx?id=17851

    2013년 4월 23일 화요일

    [PS] Search-ADAccount 계정 상태를 확인

    사용자의 계정상태를 수시로 모니터링 해줘야 하는것도, Active Directory 관리자의 몫일 것이다.

    수많은 계정 정보를 한눈에 모니터 해볼 수 있도록 Search-ADAccount 를 사용해보자.


    암호가 만료되지 않은 모든 계정을 반환한다.
    • Search-ADAccount -PasswordNeverExpores | FT name, ObjectClass -A

    잠김 계정을 반환(해제)한다.
    • Search-ADAccount -lockedOut | FT name,ObjectClass -A
    • Search-ADAccount -lockedOut | Unlock-ADAccount

    사용하지 않도록 설정된 모든 사용자/컴퓨터/서비스 계정을 반환
    • Search-ADAccount -AccountDisabled | FT name, ObjectClass -A

    사용하지 않도록 설정된 모든 사용자(컴퓨터)만 반환
    • Search-ADAccount -AccountDisabled -UsersOnly | FT name,Object -A
    • Search-ADAccount -AccountDisabled -ComputersOnly | FT name,Object -A

    해당 시점(날짜)에 만료되는 계정 반환 (2013년 5월 30일)
    • Search-ADAccount -AccountExpiring -DateTime "5/30/2013" | FT name,ObjectClass -A

    해당 일수 안에 만료되는 계정 반환(5일 안에 만료 되는 계정 5.00시간 00분 00초)
    • Search-ADAccount -AccountExpiring -TimeSpan 5.00:00:00 | FT name,ObjectClass -A

    해당 일수 동안 비활성 된 계정 반환(5일 동안 비활성된 계정)
    • Search-ADAccount -AccountInactive -TimeSpan 5.00:00:00 | FT name,ObjectClass -A
    • 비활성 계정인데, 계속 누군가 해당 PC를 이용하고 있다면 다른계정으로 사용하고 있다는 점~

    특정 OU의 계정들 Disabled 하기(Disabled 된 계정 한번에 Enable 해주기)
    • Get-Aduser -Filter * -Searchbase "OU=Ceo, DC=PS, DC=COM" | Disabled-ADAccount
    • Search-ADAccount -AccountDisabled | Enable-ADAccount

    이정도 기본?사항이며, 여러경우로 응용 할 수 있다는 점~

    2013년 4월 10일 수요일

    [PS] 작업했던 명령어 및 결과 내용까지 저장

    History 기능은 실행 명령어만 기록을 해주는 반면 아래 기능은 실행 결과 값까지 모두 기록, 저장을 해준다.

    PowerShell 로 작업한 명령어를 저장하는 명령어는 다음과 같다
    • Start-Transcript
    이렇게 하면 이후 실행하는 명령어와 그 결과값은 txt로 저장이 가능하다. 아래 예제.




    이후, 종료 명령어는 다음과 같다.
    • Stop-Transcript
    이렇게 하고 폴더에 가면 파일이 생성되어 있을것이다. 아래 예제




    주의 할 점 : cmdlet(cmd.exe) 에서 사용되는 명령어(유틸)은 기록되지 않는다.
    이럴때는 명령어 뒤에 다음과 같은 명령어를 추가해서 실행해 준다. 아래 예제
    • Out-Default


    추가사항 (아래 내용의 출처 : http://svrstudy.tistory.com/search/Profile)

    -Path : 파라미터를 통해 직접 작업 내용 기록 파일을 지정 할 수도 있으며,
    -Append : 파리미터를 지정해서 작업 내용 기록이 해당 파일을 덮어쓰는 것이 아니라,
                      문서의 끝부분에 추가되도록 할 수도 있습니다.
    -Force : 파라미터를 지정하면 읽기전용 속성의 파일에도 작업 내용을 기록 할 수 있습니다.
                  이 파라미터를 지정할 경우, 대상 파일의 권한을 읽기/쓰기 로 변경하게 됩니다.
                  단, 보안제한 으로 인해 접근 할 수 없는 경우에는 이 파라미터를 지정 해도 접근 할 수 없습니다.

    2013년 3월 6일 수요일

    [PS] 현재까지 실행 명령어 64개 저장하기.

    이제까지 내렸던 명령어 64개 명령어 저장하여 보기(.txt로 저장)

    get-history -Count 64 > t.txt : t.txt (기본 c:\) : 화면에 나오지 않는 것은 짤리는 현상이 있다.

    get-history -Count 64 | ft -a -wrap > t.txt  :  긴 명령어 짤린다면 이것을 사용.
    Tip : -a = Auto Size

    [PS] PowerShell에서 함수 적용 되지 않을때.

    가끔 명령어의 tab(함수 호출)이 먹히지 않거나
    AD에서의 명령어가 아에 등록되지 않을때는
    아래처럼 입력 해 준다.

    모듈 등록 : Import-module -name ActiveDirectory

    2012년 12월 3일 월요일

    [PS] Active Directory 가입된 PC에게 정책적용 명령어 한꺼번에 실행(GPupdate.exe /Force)

    보통 회사에서 정책을 변경 한 후, 직원들에게 적용 시킬때,
    일일이 부서 및 직원들에게 GPupdate.exe /Force 명령어를 실행도록 부탁 하는것은 현실적으로 무리한 일이다.

    이때, Window Remote Management 서비스를 이용하여 PowerShell 명령어를 사용함으로써,

    수십대, 수백대의 컴퓨터에 명령어를 강제집행(?) 할 수 있다.

    앞서 WinRM 서비스를 참고 한 뒤,

    다음과 같이 명령어를 실행~!!
    • Get-Adcomputer -Filter * | ForEach-Object {Invoke-Command -Computername $_.DnsHostname -Scriptblock {gpupdate.exe /force}}
             ※ 여기서 computername에 Name 또는 DnsHostname을 모두 사용할 수 있다.
                 ForEach-Object {Invoke-Command -Computername $_.DnsHostname -Scriptblock  
                 {gpupdate.exe /force}} 를 알아두어야 한다.

    ForEach는 처리 속도면에서 좀 느리다. 좀 더 빨리 처리하기 위해서는 아래와 같이 하면 좋다. 
    • Invoke-Command -ComputerName (Get-ADComputer -Filter * | Select-Object -ExpandProperty Name) {gpupdate.exe /force}
    위의 두 명령어에 대하여 앞에 Measure-Command { }을 해서 TotalMilliseconds를 보면 처리 속도를 확인할 수 있다.
    • Measure-Command {Get-Adcomputer -Filter * | ForEach-Object {Invoke-Command -Computername $_.DnsHostname -Scriptblock {gpupdate.exe /force}}}
     
    • Measure-Command {Invoke-Command -ComputerName (Get-ADComputer -Filter * | Select-Object -ExpandProperty Name) {gpupdate.exe /force}}
    한가지 더, 위의 명령어들은 DC내 모든 PC를 통합하여 설정을 내린다.
    이때, DC로 등록되어진 본 서버에게도 명령어가 내려가므로 에러 표시가 나올 수 있다.
    원하는 개체에(예:부서)만 해당명령어를 내리고 싶을땐, 아래와 같이 해준다.
    • ICM -Computer (Get-ADComputer -Filter * -SerchBase "OU=abc, DC=xyz, DC=COM" | Select-Object -ExpandProperty Name) {GPupdate.exe /Force}

    자료 참고:
    http://powershell.kr/ 이용식 강사님

    2012년 11월 29일 목요일

    [PS] Active Directory 많은 계정을 CSV / pipeline 이용하여 한번에 추가

    ISE 를 실행, Active Directory Module 의 New-ADuser를 사용하여 많은 계정을 한번에 생성 해보자.

    우선 " New-ADuser | Get-Member "를 실행하여 Parameter 값을 확인.
    (이 Parameter를 매개변수로 활용하여 계정 생성하는 것이다.)

    Point! Help New-ADuser를 실행하면 " Name "은 무조건 꼭! 사용해야 된다.

    CSV를 생성할때, Parameter 값을 미리 지정하여 사용한다.
    아래 그림처럼 메모장으로 생성 해 준다.
    메모장 사용 시 유의할 점
    • 메모장 저장 시, " UTF-8 " 형태로 저장하면 한글 사용이 가능하다.
    • 엑셀로 빠르게 작업 후 복사 후 메모장으로 옮긴다.(콤마 주의)
    • 빈칸이 있으면 안된다.(차후 Import 해줄 때, 에러 남)
    • Parameter 값이 아닌 다른 값을 사용 할 경우 실행은 되나, 확인 해 보면 해당 값은 없다.(그럴 일은 없을 듯?)









    위와 같이 메모장으로 생성을 해준다.(필요 시 Properties(특성 편집기) 확인 후 더 넣어줘도 됨)
    아래와 같이 실행~♬

     
    해당  OU까지 지정해서 넣어주고 싶다면, " -PATH " 를 지정하여 설정한다.

    ※ 참고 : New-ADuser 로 계정 생성하면 계정이 기본 "잠금" 설정 되어 있어, 한번에 잠금 해제를 해줘야 한다.

    자료 참고 출저 : http://powershell.kr/ : 이용식 강사님

    2012년 7월 23일 월요일

    [PS] Active Directory, New-ADuser 로 AD 계정추가 [2]


    대량 계정 추가 / OU지정 / 계정 속성 부여 / 잠금 해제를 한번에 하기

    마우스로 일일이 많은 사용자 계정을 만든다는것이 보통 힘든일이 아니다.
    단순 노가다도 이런것이 또 없지 않나 싶을정도다..

    그래서 선택한다면 CMD상에서 명령어로 바로바로 쳐주면 시간과 노력이
    마우스로 하는것에 비해 절감효과가 좋다.

    하지만 Net user도 사용자 계정 잠금 상태가 아닌것으로는 생성이 가능하나,
    AD 환경이 아니라서 계정 하나하나 해당 OU로 옮기는 작업을 따로 해줘야 한다.

    만약 500명을 생성할 경우 일일이 마우스로 옮긴다는것이 얼마나 불편할고~~!!??
    아~ 끔찍하다.ㅠ_ㅠ

    그럼 좋다~!!(결의에 찬 듯... 뚜둥!)
    PowerShell 도구 중에 스크립트를 만들수 있는 ISE(비쥬얼 스튜디오 환경과 같은) 프로그램이 존재한다.
    ISE를 실행하여 아래 그림 참고 하여 만들자.

    위에  ' ; ' 표시는 여러 명령어를 조합하여 사용할때 구분짓는 구분자다.
    Get-ADuser 부분의 명령어는 한줄로 입력하지 않으면 구문 오류가 날 수 있다. 파일을 *.PS1 파일로 저장하고,

    Windows Powershell용 Active Directory 모듈을 실행하여 아래 그림처럼 실행한다!!


    그럼 계정생성, OU지정, 표시 이름, Login Type(Vista ver)까지 넣어줄수 있다!!
    이 얼마나 편한 작업인가!ㅠ_ㅠ

    ※ 사실 Search-ADAccount -Accountdisabled -SearchBase "ou=HRI, dc=HRIADC, dc=com" | Enable-ADAccount 이 부분은
    계정을 모두 생성 한 후에, Search-ADAccount -Accountdisabled | Enable-ADAccount 명령어 한번으로 한꺼번에 처리 가능하다.

    [PS] 휴면(사용안함) 계정 해제

    New-ADuser 로 생성된 계정은 기본적으로 "계정 사용 안함" 상태가 되어
    모두 해제를 해야한다.
    • Search-ADAccount -AccountDisabled : 휴면 계정확인

    • Search-ADAccount -AccountDisabled | FT name : 휴면 계정명으로만 나타내기

    • Enable-ADAccount -Identity Username : 휴면 계정 해제하기

    • Search-ADAccount -AccountDisabled | Enable-ADAccount
            : 많은 휴면 계정 한번에 해제하기

    [PS] Active Directory, New-ADuser 로 AD계정 추가 [1]

    • New-ADuser -name Username : AD 내 계정을 생성한다.

    • New-ADuser -name Username -Path "ou=ou, ou=ou, dc=AD1, dc=COM"
           OU를 지정하여 계정 생성한다.

    • New-ADuser -name Username -OtherAttributes @{title="zz"; mail="aa"}
           속성값을 지정하여 계정 생성한다.
    위와 같은 방법들이 존재하며, 참고적으로 New-ADuser 명령어를 통해 생성된 계정은
    기본적으로 "계정 사용안함"(Disable) 상태가 되어 생성이 된다.

    2012년 7월 20일 금요일

    [PS] 사용자 계정 추가 방법

    net user

    • net user : 사용자 계정 현황을 보여줌

    • net user username password /add : username 계정과 password 를 동시에 추가해줌
    > 명령을 잘 실행했습니다.

    • net user username * /add : username 계정을 추가하고, 패스워드를 다시 입력 해 주는 방식
    > 사용자에 대한 암호를 입력하십시오:
    > 암호를 확인하기 위해 다시 입력하십시오:
    > 명령을 잘 실행했습니다.
     

    • net user username /delete : 계정 삭제
    > 명령을 잘 실행했습니다.

    • net localgroup : 로컬그룹 내용 확인
    • net localgroup Groupname: 로컬 그룹에 Groupname 을 적게 되면 해당 그룹에 속한 계정 표시
    • net localgroup administrators username /add : 관리자 그룹에 username 계정 추가

    2012년 7월 16일 월요일

    [PS] 실행했던 명령어 .TXT 로 저장방법.



  • 이제까지 내렸던 명령어 64개 명령어 저장하여 보기(.txt로 저장)
  • get-history -Count 64 > t.txt : t.txt로 저장하라(기본 c:\)
  • get-history -Count 64 | ft -a -wrap > t.txt

  •     -a : size 자동 조절, -wrap : 긴 명령어 잘리지 않도록 해줌.

    2012년 7월 13일 금요일

    [PS] PowerShell을 설치하여 .PS1 실행을 돕자

    Set-ExecutionPolicy RemoteSigned 은
    PowerShell 의 파일을 실행하기 위한 .ps1 스크립트이나,

    간혹 설치가 되어 있지 않은 OS들이 있다.
    아래 링크를 통해 PowerShell 을 꼭 설치 해야됨.


    링크 : PS 2.0 http://www.microsoft.com/ko-kr/download/details.aspx?id=16818

    ※ Enable-PSRemoting -Force (원격접속, 명령어 하달 등 허용) 의 경우 세팅 되지도 못함.
       또한 1.0 버전을 설치 하고  ICM(Invoke-Command) 명령어가 되지 않았다.
       2.0 버전을 추천한다.

    [PS] Set-ExecutionPolicy의 RemoteSigned의 의미

    ※ 아래 내용은 이용식 강사님의 블로그(http://powershell.kr/)내용을 담아 온 것입니다.


  • Powershell에서는 확장자 ps1을 갖는 스크립트 파일을 기본적으로 실행하지 못하도록 되어 있다. 그것은 바로 ExecutionPolicy가 Restricted로 되어 있기 때문이다.


  • 그렇다면 ExecutionPolicy의 종류들이 어떤 것들이 있는지 확인하기 위해서 Help Set-ExecutionPolicy를 해보면 매개변수 ExecutionPolicy가 있음을 알 수 있다.


  • 그래서 Help Set-ExecutionPolicy -Parameter ExecutionPolicy를 해보면 다음과 같이 나타난다.



  • 여기서 우리가 일반적으로 많이 설정하는 RemoteSigned가 의미하는 것이 무엇일까? 그것은 바로 Sample.ps1 파일이 로컬 컴퓨터에 있지 않고 원격 파일 서버에 있을 때 sample.ps1은 반드시 디지털 서명이 되어 있어야 한다는 것이다.
    • 로컬 컴퓨터의 ExecutionPolicy가 Restricted로 설정되어 있는 경우,
      Powershell.exe -ExecutionPolicy RemoteSigned -File \\FileServer\SharedFolder\sample.ps1 을 실행하려고 한다. 이 때 잠시 Restricted에서 RemoteSigned로 변경되기 때문에 원격 컴퓨터에 있는 sample.ps1 스크립트 파일은 반드시 디지털 서명이 되어 있어야만 실행이 된다는 것이다.
    • 로컬 컴퓨터의 ExecutionPolicy가 RemoteSigned로 되어 있는 경우,
      원격 컴퓨터의 스크립트 파일을 다음과 같이 실행하려고 할 때 이 스크립트 파일이 디지털 서명이 되어 있어야 한다는 것이다.

      \\FileServer\SharedFolder\sample.ps1





    • 아래 그림은 로컬 컴퓨터 이름이 DC이고 원격 컴퓨터 이름은 Server1이다. DC는 RemoteSigned이고 Server1은 Restricted이다. 로컬 컴퓨터의 ps1 파일을 실행하여 원격 컴퓨터의 notepad 실행 여부를 확인할 때는 제대로 나왔다. 그 이유는 로컬 컴퓨터가 RemoteSigned로 되어 있어서 로컬 컴퓨터의 ps1 파일은 디지털 서명이 되어 있지 않아도 실행되기 때문이다.
      그런데 원격 컴퓨터의 ps1 파일을 이용하여 원격 컴퓨터의 notepad 실행 여부를 확인하니 오류가 발생했다. 그 이유는 원격 컴퓨터가 Restricted로 되어 있기 때문에 { }안에 있는 내용인 ps1 파일이 실행되지 않은 것이다. 여기서 Invoke-Command의 { }안에 있는 cmdlet 또는 script는 원격 컴퓨터에서 실행된다는 것을 꼭 알아야 한다.

  • [PS] 사용자 로그온 시 프로그램 자동실행 : Group Policy 이용

    ※ 아래 내용은 이용식 강사님의 블로그(http://powershell.kr/)내용을 담아 온 것입니다.

  • Powershell 명령어(Invoke-WmiMethod)를 사용하여 로컬 및 원격 컴퓨터에 프로그램을 실행해보자.

  • 로컬 컴퓨터에 계산기 프로그램을 실행해보자.
    (Invoke-WmiMethod Win32_Process Create calc.exe).ReturnValue -eq 0

  • 원격 컴퓨터에 메모장 프로그램을 강제로 실행해보자.
    (Invoke-WmiMethod Win32_Process Create notepad.exe -ComputerName Server1 -Credential Administrator).ReturnValue -eq 0

  • 로컬 컴퓨터에 프로그램을 실행하면 그 결과가 창으로 나타나지만 원격 컴퓨터는 나타나지 않는다. 그것은 바로 세션이 다르기 때문이다. 하지만 get-process로 보면 알 수 있다.
    Invoke-Command -ComputerName Server1 {Get-Process -Name notepad}

  • 우리가 원하는 것은 프로그램을 실행하는데 그치지 않고 해당 프로그램이 특정한 파일을 실행하도록 하는 것이다.

  • 이제는 프로그램으로 파일까지 실행하여 보자. 즉, 음악 파일(mp3)을 실행해보자.
    (Invoke-WmiMethod Win32_Process Create “C:\Program Files\Windows Media Player\wmplayer.exe c:\letter.mp3“).ReturnValue -eq 0(** 여기서 중요한 것은 프로그램 실행 파일 위치를 정확히 알고 있어야 한다는 것. 음악이 제대로 실행되어 소리가 들리고 있다.)

  • Word 파일을 실행해보자.
    (Invoke-WmiMethod Win32_Process Create “C:\Program Files\Microsoft Office\Office14\winword.exe c:\lab\1.docx“).ReturnValue -eq 0** 참고: 각 프로그램의 실행 파일의 위치를 찾고자 하면 작업관리자를 실행하여 해당 프로그램을 마우스 우측 버튼을 사용하여 “프로세스로 이동”을 선택하고 다시 “파일 위치 열기”를 클릭하면 알 수 있다.

  • 위에서 실행한 mp3와 docx 파일을 사용자가 로그온하자 마자 실행하도록 하려면 어떻게 하면 될까? 바로 Powershell Script를 생성하여 Group Policy를 적용하면 된다. 여기서는 파일 서버에 저장된 “공지사항.txt” 파일을 사용자가 로그온 하자 마자 화면에 나타나도록 해 보자.
    • 스크립트 생성하기(C:\ExecutingProgramOnLoggedOn.ps1)
      (Invoke-WmiMethod Win32_Process Create “notepad.exe \\dc\shareddata$\공지사항.txt”).ReturnValue -eq 0
    • Group Policy(GPO이름: 공지사항프로그램실행)를 생성하여 해당 OU에 링크를 건다. 이 때 사용하는 스크립트는 C:\ExecutingProgramOnLoggedOn.ps1 이다.
    • 이제 사용자가 로그온 한다. 그러면 공지사항 파일이 실행되는지 확인해본다. (성공!!)


  • 이렇게 된다는 뜻은 회사의 모든 직원이 컴퓨터를 켜서 로그온 하면 모두 자신의 컴퓨터 화면에 공지사항이 나타난다는 것이다.
    이렇게 사용자가 로그온하자 마자 파워셀 스크립트가 실행되도록 하면 각종 프로그램 및 파일을 자동으로 실행할 수 있다. 특히 원격의 파일 서버에 있는 파일을 실행할 수 있기에 참 좋다. 음악을 자동으로 실행할 수도 있고, 영화 및 문서 또는 PPT도 자동으로 실행할 수 있다는 것이 매우 중요하다.
  • [PS] PowerShell을 이용하여 Active Directory 개체 복원

    ※ 아래 내용은 이용식 강사님의 블로그(http://powershell.kr/)내용을 담아 온 것입니다.


  • Active Directory Recycle Bin 기능을 사용하도록 설정한다
    Enable-ADoptionalFeature –Identity “cn=Recycle Bin Feature, cn=Optional Features, cn=Directory service, cn=Windows NT, cn=Services, cn=Configuration, Dc=Powershell, dc=Local” –Scope ForestOrConfigurationSet –Target “Powershell.local”


  •  위에서 Dc 부분과, -Target 부분 내용을 본인의 내용으로 수정하면 된다.


  • 사용자 계정을 삭제한다 (ITadminUser#a)
    (**중요: ITAdminUser#a 계정은 반드시 이전에 Domain에 로그온한 경험이 있어야 한다. 그냥 테스트하기 위해 계정을 만들고 로그온도 하지 않으면 실패한다.)


  • 다음과 같이 삭제된 사용자 계정을 복원한다
    Get-ADobject –Filter {displayName –eq “ITAdminUser#a”} –IncludeDeletedObjects | Restore-ADobject


    삭제된 사용자 계정이 복원되었는지 확인한다
  • 2012년 7월 12일 목요일

    [PS] 직원PC Administrator 계정 사용 금지

    ※ 아래 내용은 이용식 강사님의 블로그(http://powershell.kr/)내용을 담아 온 것입니다. 

  • 직원들 컴퓨터의 administrator 계정을 사용 못하게 하면 프로그램 설치 및 컴퓨터 설정 변경을 막을 수 있다.

  • 이를 위해서 다음과 같이 하면 된다. net users administrator /active:no

  • 그러면 여러 대 컴퓨터를 동시에 변경하지 못하게 하는 방법은 invoke-command나 group policy를 사용하여 스크립트를 다운로드하여 설정하면 된다.







  • 위의 결과를 보니 server1, core1, core11 컴퓨터의 로컬 administrator 계정이 disable되었음을 알 수 있다. 이렇게 되면 클라이언트 컴퓨터에서 관리자 계정으로 로그온을 할 수 없게 되는 것이다.

  • 다시 administrator 계정을 enable 시키기 위해서는 Invoke-Command -ComputerName (Get-Content c:\computers.txt) {net users administrator /active:yes}를 하면 된다.
  • 홈