<aside> ⭐ Powershell

  1. Object-based Shell

    Object = Property + Method

    # cmdlet의 property와 method 확인
    cmdlet | Get-Member
    
    # bits status 확인
    (Get-Service -Name bits).Status
    
    # Stopped인 상태 확인
    Get-Service | Where-Object {$_.Status -eq “Stopped”}
    
    # 각 cmdlet의 Property의 값 확인
    cmdlet | Format-List *
    
    # Method 시작/중지 하기
    (Get-Service -Name bits).Start()
    (Get-Service -Name bits).Stop()
    
    # 100일 후의 날짜 알아보기 
    (Get-Date).AddDays(100)
    
  2. CLI 기반 관리작업

    # disk 정보보기
    diskmgmt.msc
    get-disk
    
    # 최근 업데이트
    get-hotfix
    (get-hotfix | sort-object -property installedon)[-1]
    
    # 세션 들어가기
    Enter-PSSession -ComputerName sea-svr1
    
    # 서버 여러개 동시에 다루기
    Invoke-Command -ComputerName Sea-svr1 {route print}
    Invoke-Command -cn sea-dc1, sea-svr1, sea-svr2 {Install-WindowsFeature -Name telnet-client}
    
    # 파일 찾기/복사
    mkdir c:\\pics
    get-childItem -Path c:\\Windows\\ -Filter *.jpg **-Recurse**
    get-childItem -Path c:\\Windows\\ -Filter *.jpg **-Recurse** | copy-item -Destination c:\\pics
    
  3. GUI 개발용도

  4. Scripting 환경제공

    → 반복적으로 해야할 작업이나 자동화 해야할 작업에 사용

    → PowerShell ISE 사용

  5. 맞춤 가능(Customizable)

  6. 확장 가능(Expandable)

  7. .NET Framework 기반 </aside>

<aside> ⭐ powershell 사용 상황

  1. 반복적인 작업을 할 때

    Untitled

    # csv 파일을 만들어서 한꺼번에 동시작업
    import-csv -Path .\\adusers.csv | new-aduser
    
  2. 세부적인 내용을 확인할 때

  3. 한꺼번에 여러 개의 데이터를 수정할 때

    # 부서 이름 한꺼번에 수정
    Get-ADUser -Filter {department -eq “Sales”} | Set-ADUser -Department “Dometic Sales1”
    
  4. 일상적인 작업을 신속하게 처리할 때

    # IP Address 구성 정보
    Get-NetIPConfiguration
    
    # 공유된 폴더 목록 확인
    Get-SmbShare
    
    # 컴퓨터 이름 변경
    Rename-Computer -NewName svr2 -Restart
    
    # 특정 프로그램 종료
    Get-Process -Name chrome | Stop-Process -Force
    
  5. 동시에 여러 대의 컴퓨터에 원격 관리 작업할 때

  6. Script 파일을 Group Policy로 적용할 때 </aside>

<aside> ⭐ powershell 장점 cmd.exe에서 사용하는 거의 모든 명령어 사용 가능

Get-Command -CommandType Application | Where-Object {$_.name -like "*.exe"}

cmd.exe에서 부족했던 Pipeline 기능 사용 가능

Cmdlet이 계속 늘어난다

명령어의 구문이 이해하기 쉽다

도움말 기능이 탁월하다

사용한 명령어와 관련된 명령어를 쉽게 알 수 있다

</aside>

<aside> ⭐ powershell 장점

# .exe로 끝나는 명령어 확인 (msc 도 가능)
Get-Command -CommandType Application | Where-Object {$_.name -like "*.exe"}
Get-Command -CommandType Application | Where-Object {$_.name -like "*.msc"}
Get-Command -CommandType Application | ? {$_.name -like "*.msc"}

<aside> ⭐ PowerShell version

# version 확인
$psversiontable

</aside>

<aside> 📌 정리

<aside> 📌 필수적인 cmdlet

  1. 별칭(Alias) 사용하기
# parameter 알아보기
help get-childItem

# 별칭 알아보기
get-alias -definition select-string
get-alias -name sls
# 등록
Set-Alias excel
Export-Alias c:\\Lab\\AddedAlias.txt

# profile에 저장하여 사용
$profile
  1. 변수 사용하기

    $profile

    $host

    $PSVersionTable

    # -Filter, {}, Where-Object 앞에 나온 Object
    $_
    Get-Service | Where-Object {$_.name -like "app*"}
    
    # windows powershell이 설치된 위치
    cd $PsHome
    
  2. 필수적인 cmdlet

    1. Get-Member

    2. Select-Object

      # property 선택하여 보기
      get-service | select-object name, displayname | more
      
    3. Where-Object

      Get-ChildItem -Path c:\\windows\\ -filter *.txt -recurse
      Get-ChildItem -Path c:\\windows\\ -recurse | where-Object {$_.name -like "*.txt"}
      
    4. ForEach-Object

      # \\lab폴더 파일 이름 또는 프로세스 이름 확인
      dir c:\\lab -Recurse | ForEach-Object {$_.name}
      get-process | foreach-object {$_.name}
      
      # 숫자 사칙연산
      1..13 | $ {$_*7}
      
      # 원격 컴퓨터를 강제로 GPupdate하기
      Get-ADComputer -Filter {Name -like "server*“} | % {Invoke-GPupdate -
      Computer $_.name -Force -RandomDelayInMinutes 0}
      
    **# 특정한 날 이후로 지금까지 변경된 파일 확인**
    Get-ChildItem $Home -Recurse | Where-Object {$_.LastWriteTime -gt “04/30/2014”}
    

</aside>

<aside> 📌 가장 많이 쓰이는 명령어

  1. Format-*
# format list
Get-Process | fl *

Get-Process | Format-Wide -Column 4
Get-Process | fw -Column 4

$ProFILE | get-member | ft -wrap
  1. *-csv

  2. *-CliXml

  3. Out-*

    Get-Process | Out-Host
    Get-Process | Out-Default
    
    # grep
    Get-Alias | Out-String -Stream | Select-String "get-command"
    
  4. *-Host

    Untitled

  5. ConvertTo-*

  6. Test-*

    Untitled

</aside>

<aside> 📌 PowerShell 심화

<aside> 🛠 online에서 module과 package설치

</aside>

<aside> 🛠 Azure

</aside>