Powershell 5.0 클래스 를 처음 알 았 습 니 다.
4795 단어 classshellPowerPowerShell
직접 예 를 들 어 봅 시다.
예 를 들 어 내 가 people 클래스 를 만 드 는 것 이다.
주의 요점:
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 가 구체 적 으로 어떤 특성 을 실 현 했 는 지 천천히 시도 해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JavaScript 'getter' 대 'setter'Assalomu alaykum, bugun sizlar bilan JavaScriptda getter va setter metodlari tanishamiz. getter va setter metodlari orqa...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.