Windows PowerShell 1편
Windows 2009/02/12 00:35
Windows Server를 관리하다보면, 리눅스와 달리 Shell 스크립트 제작에 불편함이 있다.
cmd로 기본적인 기능들의 구현은 가능하지만, 복잡한 작업을 하기에는 무리가 있다.
이를 극복하기 위해 Windows PowerShell이 나왔으며, Windows 2008 Server에서는 기본으로 체택하고 있다.
Windows PowerShell 1.0을 통하여 보다 많은 작업들이 가능해졌으며,
Windows PowerShell 1.0은 WIndows Server 2003 에서도 사용 가능했었으나, 3rd Party의 느낌이었다.
하지만 Windows 2008 Server 에서는 WIndows PowerShell 1.0을 기본으로 체택함과 동시에,
현재는 WIndows PowerShell 2.0이 발표 되었고, 보다 많은 기능들의 개선이 있었다.
Windows Server 2003용 PowerShell 1.0은 이곳 에서 구할 수 있으며, Windows PowerShell 2.0은 이곳에서 구할 수 있다.
그럼, 몇가지 간단한 예제들
기존 cmd의 echo와 같은 Write-Host. cmd의 명령들도 그대로 사용할 수 있다.
첫 포스팅이니 깊이 파코들지 않도록 하겠다.
위의 예제들 처럼, PowerShell을 통하여 리눅스 처럼 시스템 관리용 스크립트 제작이 용이해졌으며,
기존과 달리 많은 작업들을 단순화 하는것이 보다 쉬워졌다고 할 수 있다.
cmd로 기본적인 기능들의 구현은 가능하지만, 복잡한 작업을 하기에는 무리가 있다.
이를 극복하기 위해 Windows PowerShell이 나왔으며, Windows 2008 Server에서는 기본으로 체택하고 있다.
Windows PowerShell 1.0을 통하여 보다 많은 작업들이 가능해졌으며,
Windows PowerShell 1.0은 WIndows Server 2003 에서도 사용 가능했었으나, 3rd Party의 느낌이었다.
하지만 Windows 2008 Server 에서는 WIndows PowerShell 1.0을 기본으로 체택함과 동시에,
현재는 WIndows PowerShell 2.0이 발표 되었고, 보다 많은 기능들의 개선이 있었다.
Windows Server 2003용 PowerShell 1.0은 이곳 에서 구할 수 있으며, Windows PowerShell 2.0은 이곳에서 구할 수 있다.
그럼, 몇가지 간단한 예제들
PS C:\> Get-Help
항목
Get-Help
간단한 설명
PowerShell cmdlet 및 개념에 대한 도움말을 표시합니다.
PS C:\> Get-Help Get-Date
이름
Get-Date
개요
현재 날짜 및 시간을 가져옵니다.
기존 cmd의 echo와 같은 Write-Host. cmd의 명령들도 그대로 사용할 수 있다.
PS C:\Users\Administrator> Write-Host "Hello, World!"시간 표시
Hello, World!
PS C:\Users\Administrator> echo "Hello, World!"
Hello, World!
PS C:\Users\Administrator> Date시간 가지고 놀기
2009년 2월 12일 목요일 오전 12:15:37
PS C:\Users\Administrator> Get-Date
2009년 2월 12일 목요일 오전 12:15:41
PS C:\Documents and Settings\Administrator> [DateTime]변수 및 시간 포맷 바꾸기
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True DateTime System.ValueType
PS C:\Documents and Settings\Administrator> [DateTime]::Now
2009년 2월 12일 목요일 오전 12:21:43
PS C:\Documents and Settings\Administrator> [DateTime]::Now.ToString()
2009-02-12 오전 12:23:27
PS C:\Documents and Settings\Administrator> [DateTime]::Now.AddHours(-1)
2009년 2월 11일 수요일 오후 11:23:04
PS C:\Documents and Settings\Administrator> [DateTime]::Now.AddHours(1).ToString()
2009-02-12 오전 1:24:09
PS C:\Documents and Settings\Administrator> $a=1get-command 명령
PS C:\Documents and Settings\Administrator> write-host $a
1
PS C:\Documents and Settings\Administrator> $b=2
PS C:\Documents and Settings\Administrator> write-host $a+$b
1+2
PS C:\Documents and Settings\Administrator> $c=$a+$b
PS C:\Documents and Settings\Administrator> write-host $c
3
PS C:\Documents and Settings\Administrator> $date=[DateTime]::Now.AddHours(-2)
PS C:\Documents and Settings\Administrator> $date=get-date $date -uformat "%y%m%d%H"
PS C:\Documents and Settings\Administrator> write-host $date
09021122
PS C:\Documents and Settings\Administrator> get-command wscriptget-process 명령
CommandType Name Definition
----------- ---- ----------
Application wscript.exe C:\WINDOWS\system32\wscript.exe
PS C:\> Get-Command *.msc
CommandType Name Definition
----------- ---- ----------
Application certmgr.msc C:\WINDOWS\system32\certmgr.msc
Application ciadv.msc C:\WINDOWS\system32\ciadv.msc
Application compmgmt.msc C:\WINDOWS\system32\compmgmt.msc
Application devmgmt.msc C:\WINDOWS\system32\devmgmt.msc
Application dfrg.msc C:\WINDOWS\system32\dfrg.msc
Application diskmgmt.msc C:\WINDOWS\system32\diskmgmt.msc
Application eventvwr.msc C:\WINDOWS\system32\eventvwr.msc
Application fsmgmt.msc C:\WINDOWS\system32\fsmgmt.msc
Application gpedit.msc C:\WINDOWS\system32\gpedit.msc
Application lusrmgr.msc C:\WINDOWS\system32\lusrmgr.msc
Application ntmsmgr.msc C:\WINDOWS\system32\ntmsmgr.msc
Application ntmsoprq.msc C:\WINDOWS\system32\ntmsoprq.msc
Application perfmon.msc C:\WINDOWS\system32\perfmon.msc
Application rsop.msc C:\WINDOWS\system32\rsop.msc
Application secpol.msc C:\WINDOWS\system32\secpol.msc
Application services.msc C:\WINDOWS\system32\services.msc
Application SQLServerManager.msc C:\WINDOWS\system32\SQLServerManager.msc
Application SQLServerManager10.msc C:\WINDOWS\system32\SQLServerManager10.msc
Application wmimgmt.msc C:\WINDOWS\system32\wmimgmt.msc
PS C:\> get-process
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
105 5 1224 3668 36 0.02 2796 alg
39 3 1000 3360 31 0.09 2072 conime
493 7 5344 6636 69 15.44 908 csrss
150 6 1096 4424 39 0.89 1840 ctfmon
149 6 4084 9580 45 0.77 1980 daemon
170 5 3052 6632 57 0.13 1792 dpupdchk
PS C:\> $a = get-process
PS C:\> get-process -inputobject $a | format-table -view priority
PriorityClass: Normal
ProcessName Id HandleCount WorkingSet
----------- -- ----------- ----------
alg 2796 105 3756032
conime 2072 39 3457024
csrss 908 493 6852608
PriorityClass: High
ProcessName Id HandleCount WorkingSet
----------- -- ----------- ----------
winlogon 932 459 4165632
PriorityClass: Normal
ProcessName Id HandleCount WorkingSet
----------- -- ----------- ----------
wlcomm 3784 472 27295744
첫 포스팅이니 깊이 파코들지 않도록 하겠다.
위의 예제들 처럼, PowerShell을 통하여 리눅스 처럼 시스템 관리용 스크립트 제작이 용이해졌으며,
기존과 달리 많은 작업들을 단순화 하는것이 보다 쉬워졌다고 할 수 있다.



