Powershell 5.0 클래스 를 처음 알 았 습 니 다.

과거 에는 콩 이 PowerShell 로 사용자 정의 대상 을 처리 할 때 hash 표를 통 해 변환 되 었 습 니 다.오늘 PS 5 에 있 는 class 기능 을 살 펴 보 니 이 기능 이 너무 좋 은 것 같 습 니 다. 대상 을 대상 으로 하 는 다른 언어 개발 기반 이 있 으 면 쉽게 손 에 넣 을 수 있 습 니 다.
직접 예 를 들 어 봅 시다.
예 를 들 어 내 가 people 클래스 를 만 드 는 것 이다.
주의 요점:
  • 형식
  • 나 는 static 을 통 해 정적 속성 $sex
  • 를 지정 했다.
  • Enum 은 PS5 의 또 다른 nb 기능 으로 스스로 매 거 진 종 류 를 만 들 수 있 습 니 다. 그리고 이런 인 스 턴 스 는 한 정 된 범위 에서 만 나타 날 수 있 습 니 다.예 를 들 어 nationality (국적) 는 내 가 지정 한 몇 개의 국가 이름
  • 일 수 밖 에 없다.
    Class people
    {
    [string]$name
    [int]$age
    static [string]$sex='male'
    [string]$career
    [nationality]$nationality
    }
    
    
    Enum nationality
    {
     China = 1
     Japan = 2
     Australia = 3
     USA = 4
     Russia = 5
    }

    클래스 를 만 들 었 습 니 다. 예화 가 필요 합 니 다.여기 에는 두 가지 방식 이 실례 화 되 어 있 는데 첫 번 째 는 전통 적 인 방식 과 마찬가지 로 뉴 - Object 가 실 현 된 다음 에 각 실례 의 속성 값 을 하나씩 부여 하 는 것 이다
    $obj=new-object people
    $obj.name='alex'
    $obj.age=20
    $obj.career='IT'
    $obj.nationality='china'
    $obj::sex
    $obj

    결 과 는 다음 과 같 습 니 다. 그의 정적 구성원 은 인 스 턴 스 대상 의 속성 에 표시 되 지 않 고 다음 과 같은 방식 으로 만 표시 할 수 있 습 니 다.
    male
    name age career nationality
    ---- --- ------ -----------
    alex  20 IT           China

    두 번 째 예화 방식 은 new () 라 는 구조 함 수 를 통 해 예화 하 는 것 이다. 그 와 첫 번 째 차 이 는 주로 첫 번 째 방식 이 초기 화 되 는 동시에 - property 를 통 해 속성 을 지정 할 수 있 지만 new () 의 기본 구조 방법 은 = 을 통 해 속성 에 값 을 부여 할 수 밖 에 없다 는 것 이다.
    $obj2=[people]::new()
    $obj2.name='james'
    $obj2
    
    $obj3=new-object people -Property @{'name'='kevin';'age'=30;'career'='Chef'; 'nationality'='Japan'}
    $obj3

    만약 new () 가 실례 화 될 때 함께 값 을 부여 해 야 한다 면, 우 리 는 수 동 으로 구조 함 수 를 다시 쓸 수 있 습 니 다.
    예 를 들 면
    Class people
    {
    [string]$name
    [int]$age
    static [string]$sex='male'
    [string]$career
    [nationality]$nationality
    people($name,$age,$career,$nationalty){
    $this.name=$name
    $this.age=$age
    $this.career=$career
    $this.nationality=$nationalty
    }
    }
    Enum nationality
    {
     China = 1
     Japan = 2
     Australia = 3
     USA = 4
     Russia = 5
    }
    $user=[people]::new('zhangsan',22,'receptionist','china')
    $user
    -------
    
    name     age career       nationality
    ----     --- ------       -----------
    zhangsan  22 receptionist       China

    그리고 간단하게 상속 을 살 펴 보도 록 하 겠 습 니 다.
    상속 관계 통과: 실현.
    예 를 들 어 저 는 키 클래스 immigrant 를 만 들 고 people 을 계승 하 며 하위 클래스 에서 새로운 속성 을 정의 할 수 있 습 니 다.
    class immigrant : people
    {
    [nationality]$destination
    }
    $immi=New-Object immigrant -Property @{'name'='qq';'age'=30;'career'='dancer'; 'nationality'='Japan';'destination'='USA'}
    $immi
    ------------
    PS C:\Windows\system32> $immi
    destination : USA
    name        : qq
    age         : 30
    career      : dancer
    nationality : Japan

    마지막 으로 과정 과 대상 을 대상 으로 간단 한 대 비 를 한다.
    먼저 전통 적 인 방식 으로 hash 표를 통 해 사용자 정의 대상 으로 전환 하 는데 이런 개발 방향 은 과정 을 대상 으로 해 야 한다.
    Function Get-SystemInfo{
    [cmdletbinding()]
    param(
    [string[]]$ComputerName
    )
    begin{}
    process{
    $result=@()
    foreach($computer in $ComputerName){
    try{
    write-verbose "Querying OS and Computer System"
    $os=Get-WmiObject -Class win32_operatingsystem -ErrorAction Stop 
    $cs=Get-WmiObject -Class win32_computersystem -ErrorAction Stop
    }catch{
    $computer |out-file c:\temp\error.txt -Append
    }
    $prop=@{ComputerName=$computer;LastBootTime=$os.ConvertToDateTime($os.LastBootUpTime);OSVersion=$os.Version;Manufacture=$cs.Manufacturer;Model=$cs.model}
    $obj=New-Object -TypeName psobject -property $prop
    $obj.psobject.typenames.insert(0,'Yuan.systeminfo')
    write-output $obj 
    }
    }
    end {}
    }
    Get-SystemInfo -ComputerName sydav01

    그 다음 에 저 는 대상 을 대상 으로 하 는 사고방식 으로 똑 같은 기능 을 썼 습 니 다. 클래스 를 만 들 고 클래스 안에 필드 와 방법 을 봉인 한 다음 에 실례 화 했 습 니 다.
    class sysinfo
    {
    [string] $model
    [string] $computername
    [string] $manufacture
    [string] $lastboottime
    [string] $osversion
    getinfo($computername){
    $os=Get-WmiObject -computername $computername -Class win32_operatingsystem -ErrorAction Stop 
    $cs=Get-WmiObject -computername $computername -Class win32_computersystem -ErrorAction Stop
    $this.LastBootTime=$os.ConvertToDateTime($os.LastBootUpTime);
    $this.OSVersion=$os.Version;
    $this.Manufacture=$cs.Manufacturer;
    $this.Model=$cs.model
    }
    }
    $obj=New-Object sysinfo 
    $obj.computername='sydav01'
    $obj.getinfo($obj.computername)
    $obj

    그들의 결 과 는 모두 같다.
    Model        : VMware7,1
    ComputerName : sydav01
    Manufacture  : VMware, Inc.
    LastBootTime : 7/11/2016 10:03:56 AM
    OSVersion    : 6.3.9600

    콩 은 powershell 5 class 의 기본 사용 을 간단하게 알 아 봤 을 뿐이다.클래스 의 3 대 특성, 패키지, 계승 과 다 형, Powershell 5 가 구체 적 으로 어떤 특성 을 실 현 했 는 지 천천히 시도 해 야 합 니 다.

    좋은 웹페이지 즐겨찾기