상단

PowerShell


PowerShell 7.4.3

pwsh ~.ps1

 

PowerShell Script의 확장자는 ps1을 사용 한다.

PowserShell은 .NET에서 구축된 명령줄 shell 및 script 언어 입니다.

  • PowerShell 7.4 매뉴얼

  • PowerShell GitHub

  • cmdlet : Native PowerShell 명령

  • PowerShell 7.4 version

    • PSHOME : C:/Program Files/PowerShell/7

    • 실행 파일 : pwsh.exe

    • $PSHOME/profile.ps1

    • C:/Users/User/Documents/PowerShell/profile.ps1

  • PowerShell 5.1 version

    • PSHOME : C:/Windows/System32/WindowsPowerShell/v1.0

    • 실행 파일 : powershell.exe

    • $PSHOME/profile.ps1

    • C:/Users/User/Documents/WindowsPowerShell/profile.ps1

 

도움말

#--- 도움말 정보
Get-Help  -Name  Get-Help
Get-Help  -Category  Cmdlet
Get-Help  -Name  Get-Service
Get-Help  -Name  Get-Service  -Full
Get-Help  -Name  Get-Service  -Detailed
Get-Help  -Name  Get-Service  -Examples
Get-Help  -Name  Get-Service  -Online
Get-Help  -Name  Get-Service  -Parameter Noun
Get-Help  -Name  Get-Service  -Parameter  *
Get-Help  -Name  Get-Service  -ShowWindow
man   Get-Service
help  Get-Service  -Full
help  Get-Command  -Full  |  Out-GridView
Get-Help  -Name  Get-Command  -Full  |  Out-GridView

#--- 명령어 정보
Get-Command
Get-Command  *-Service
Get-Command  -Verb  Get
Get-Command  -Noun  Service
Get-Command  -CommandType  Alias
Get-Command  -CommandType  Function
Get-Command  -CommandType  Script
Get-Command  Get-Service  -Syntax

Get-ChildItem  -?

#--- 서비스 정보
Get-Service -Name w32time
Get-Service | Where-Object Name -eq w32time
Get-Service -Name w32time | Get-Member
    Get-Command -ParameterType ServiceController
Get-Service -Name w32time | Select-Object -Property *
Get-Service -Name w32time | Get-Member -MemberType Method
    (Get-Service -Name w32time).Stop()
    Get-Service -Name w32time | Start-Service -PassThru

#--- Process 정보
Get-Process -Name PowerShell
Get-Process -Name PowerShell | Get-Member

#--- 모듈 정보
Find-Module -Name MrToolkit
Find-Module -Name MrToolkit | Install-Module

Update-Help                             #--- 도움말 업데이트

#--- cmdlet 명명 표준
Get-Verb
 

기본 정보

$PSVersionTable                         #--- Version

#--- 실행 정책
#---     Restricted : Script 파일 (~.ps)실행 불가
#---     RemoteSigned : Script 파일 (~.ps1) 실행 가능
#---     Unrestricted
Get-ExecutionPolicy
Get-ExecutionPolicy -List
Set-ExecutionPolicy  -ExecutionPolicy  RemoteSigned

별칭

#--- 별칭 관리
Get-Alias
Get-alias  cls

Set-Alias  -Name  gi  -Value  Get-Item
 

변수

#--- 변수 관리
#---     $변수명
Get-Command  -Noun  Variable  |  Format-Table  -Property  Name,Definition  -AutoSize  -Wrap

Get-ChildItem  variable:
Get-ChildItem  env:
$env:SystemRoot
$env:LIB_PATH='/usr/local/lib'
 

Command Line Argument

Write-Host "Num Args:" $args.Length;
foreach ($arg in $args) {
    Write-Host "Arg: $arg";
}

Write-Host  $args[0]
 

기본 문법

#--- -eq, -ne, -gt, -lt
$now = Get-Date
# $day = $now.DayOfWeek
$day = Get-Date  -UFormat "%A"

Write-Output  $now
if (($day -eq '토요일') -Or ($day -eq '일요일')) {
    ./zztest01.ps1
}

if  (~  -eq  $True)  {                  #--- If문
# if  (-Not  ~)
} elseif (~) {
} else {
}

switch (~)  {
# switch  -wildcard  (~)  {
# switch  -regex  (~) {
# switch  (1, 2, 3, 4, 5)  {
  ~ {}
  {$_  -gt  3} {}
  default {}
}

for  ($i = 0;  $i -lt 10;  $i++)  {
}

foreach  ($arg  in  $args)  {
}

while  (~)  {

}
 

함수

#--- 함수
function Get-Version {
    # [CmdletBinding()]
    # [CmdletBinding(SupportsShouldProcess)]
    param (
        # [ValidateNotNullOrEmpty()]
        # [Parameter(Mandatory)]         #--- 필수 입력
        [string]$ComputerName = "Desktop"
        # [string[]]$ComputerNames
    )
    $PSVersionTable.PSVersion
}
Get-Version
Get-Command -Name Get-Version -Syntax
(Get-Command -Name Get-Version).Parameters.Keys

Get-ChildItem -Path Function:G*         #--- G로 시작하는 함수목록
Get-ChildItem -Path Function:Get-Version | Remove-Item

function Get-MrParameterCount {
    param (
        [string[]]$ParameterName
    )

    foreach ($Parameter in $ParameterName) {
        $Results = Get-Command -ParameterName $Parameter -ErrorAction SilentlyContinue

        [pscustomobject]@{
            ParameterName = $Parameter
            NumberOfCmdlets = $Results.Count
        }
    }
}
Get-MrParameterCount -ParameterName ComputerName, Computer, ServerName, Host, Machine

모듈

 

스크립트 모듈

  • ~.psm1

#--- MyScriptModule.psm1 파일
function Get-MrPSVersion {
    $PSVersionTable
}

function Get-MrComputerName {
    $env:COMPUTERNAME
}

Export-ModuleMember -Function Get-MrComputerName

#--- 모듈의 함수 실행
#---     $env:PSModulePath
#---     $env:PSModulePath -split ';
Import-Module  MyScriptModule.psm1

Get-Module -Name MyScriptModule
Get-MrComputerName
 

동적 모듈

  • New-Module 명령어로 만들어지는 모듈

New-Module -Name MyModule -ScriptBlock {

    function Return-MrOsVersion {
        Get-CimInstance -ClassName Win32_OperatingSystem |
        Select-Object -Property @{label='OperatingSystem';expression={$_.Caption}}
    }

    Export-ModuleMember -Function Return-MrOsVersion

} | Import-Module

유용한 명령어

Get-Location                            #--- 현재 폴더
Get-Locaiton  |  Out-Host  -Paging      #--- 한 페이지식 정보 표시
Get-Location  |  Get-Member             #--- 반환되는 개체의 정보 표시
(Get-Location).ToString()

Set-Location  -Path  ~  [-PassThru]
Push-Location  -Path  ~
Pop-Location

Write-Host  "~"                        #--- 글씨 표시
 

참고 문헌


 
 

분류: [OS]

최종 수정일: 2024-09-30 12:26:18

이전글 :
다음글 :