본문 바로가기

OS-서버/윈도우

Powershell 기본 문법

반응형

● 명령어 조회

 

Get-Command : 명령어 목록 조회
Get-Help : 명령어 사용법      ex) Get-Help dir
③ Get-Alias : 명령어 별칭 조회

 

● 문자열

○ 확장 문자열("") - 문자열 중 변수가 포함되면 , 변수의 값이 문자열에 포함된다.

1
2
3
4
$var1 = 5
$var2 = "$var1 - $var1"
$var2 
# 출력값 : 5 - 5
cs

 

일반문자열('') - 문자열 중 변수가 포함되도 변수의 값으로 바뀌지 않는다.

1
2
3
4
$var1 = 5
$var2 = '$var1 - $var1'
$var2
# 출력값 : $var1 - $var1
cs


 

파워쉘에서는 백틱(backtick)을 이스케이프 문자로 사용한다.

이스케이프 문자를 사용하면 확장문자열에서 변수의 이름이 값으로 바뀌지 않는다.

1
2
3
4
$var1 = 5
$var2 = "`$var1 = $var1"
$var2
# 출력값 : $var1 = 5
cs

 

 

● 조건문

 

if - elseif - else

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$var = 5
 
if ( $var -eq 0 )
{
   echo "`$var = 0"
}
elseif ($var -eq 1) {
   echo "`$var = 1"
}
else {
   echo "`$var = $var"
}
 
# 출력값 : $var = 5
cs

 

○ switch (다중조건문)

1
2
3
4
5
6
7
8
9
$a = 5
switch($a)
{
    1 { '$a = 1' }
    2 { '$a = 2' }
    3 { '$a = 3' }
    4 { '$a = 4' }
    default { "etc"}
}
cs

 

 

※ 비교연산자

연산자  의미  부등호 
-eq  Equals(같다)  = 
-ne  Does not equal(같지않다)  != 
-gt  Greather than(크다)  > 
-lt  Less than(작다)  < 
-ge  Greater than or equal to(크거나 같다)  >=
-le   Less than or equal to (작거나 같다)  <=

 

▷ -like : Wildcardcomparison(와일드카드 비교)  -notlike ...

1
2
3
$var= "Good morning"
$var -like "*morning"
# 출력값 : true
cs

 

▷ -match : Regularexpression comparison(정규식 비교)  -notmatch ...

1
2
3
$var= "Good morning"
$var -match "morning" 
# 출력값 : true
cs

 

해당 조건에 not이 들어가면 부정을 말합니다.

 

● 반복문

 

○ while

1
2
3
4
5
6
$i= 0
while($i -lt 3)
{
    "`$i = $i"
    $i++
cs

 

○ For

1
2
3
4
For($i = 0; $i -lt 3; $i++)
{
   '$i = ' + $i
cs

 

○ Foreach - 배열 또는 컬렉션에 있는 모든 항목만큼 반복하는 반복문이다.
                 (For과는 다르게 카운팅을 내부적으로 알아서 해준다)

1
2
3
4
5
$array = 1..3     # 1..3은 1,2,3을 갖고있는 int 배열을 만든다.
foreach($a in $array)
{
   $a
}
cs

 

1
2
$array = 1..3
$array | ForEach-Object { $_ 
cs

$_ 는 파이프라인으로 넘어온 배열 또는 컬렉션의 각각요소들을 의미한다.

 

● 배열

 

① 빈 배열 생성

1
$array = @()
cs

 

②. 값 넣기

1
2
$array += 1
$array += 2
cs

 

③.콤마사용

1
2
$sArray = "aa","bb","cc"
$nArray = 1,2,3,4,5
cs

 

④. range 오퍼레이터 사용

1
$nArray = 1..5
cs


⑤. 구분자로 구분되어 있는 문자열

1
2
$s = "aa,bb,cc,dd"
$array = $s.split(",")
cs

 

⑥. 배열의 크기 가져오기

1
$array.Count
cs

 

⑦. 배열 값 읽기

 

◎ for

1
2
3
4
for($i=0;$i -lt $array.Count; $i++)
{
   $array[$i]
cs

◎ foreach

1
2
3
4
foreach($item in $array)
{
   $item
cs

 

 

● 함수

 

정의

1
2
3
4
5
6
7
function add_func {
Param ([int]$parm1 , [int]$parm2
 
   return $parm1+$parm2
}
 
$result = add_func -parm1 10 -parm2 5
cs

 

1
2
3
4
5
6
7
function func
echo $args[0
echo $args[1
}
 
func Hello Powershell
cs


※ 함수의 매개변수와 스크립트 파일의 매개변수는

   $args 변수안에 저장된다.

 

● 자동 변수


1. 이전 명령줄의 마지막 토큰 ( 

$

? )
2. 마지막 명령의 부울 상태 ( 

$

^ )
3. 이전 명령줄의 첫 번째 토큰 ( 

$

_ )
4. 현재 파이프라인 개체 ( 

$

_ )

    예시1

Get-Date

 

$$

 → 

Get-Date

 

$

? → true

    예시2

Get-Date

 

$

^ --> 

Get-Date



    예시3

$

array = @(1,2,3)

$

array | % { echo 

$

_ }

 

 

 

● replace 확장 기능
 
1
2
3
4
5
6
7
8
$str = 'abc_abc'
$$ = 'xyz'
$1 = '123'
 
$str -replace 'a(\w)''$1' #  bc_bc - a를 제외한 키워드 출력
$str -replace 'a(\w)'"$1" # 123c_123c - 변수 해석
$str -replace 'a(\w)''$$$1' # $bc_$bc
$str -replace 'a(\w)'"$$$1" # xyz123c_xyz123c
cs



 

 

반응형

'OS-서버 > 윈도우' 카테고리의 다른 글

Powershell 원격 제어  (0) 2018.03.20
Powershell Alias  (0) 2018.03.20
system32 폴더안에 파일 변경권한 수정  (0) 2017.10.02
윈도우 부팅시 계정 자동 로그인  (0) 2017.10.01
Windows 10 단축키  (0) 2017.09.17