det er ofte litt forvirring med hensyn til forskjellene mellom Å bruke New-Object PSObject Og PSCustomObject, samt hvordan de to fungerer.
enten tilnærming kan brukes til å ta et sett med verdier fra En samling Av PowerShell-objekter og sortere dem i en enkelt utgang. I tillegg vil begge veier sende dataene som Noteegenskaper i Systemet.Management.Automatisering.PSCustomObject-objekttyper. Så hva er big deal mellom dem?
For det første Ble Cmdleten New-Object introdusert I PowerShell v1.0 og har gått gjennom en rekke endringer, mens bruken av PSCustomObject-klassen kom senere i v3. 0. For systemer som bruker PowerShell v2.0 eller tidligere, Må New-Object brukes. Hovedforskjellen mellom 2.0-versjonen og 1.0-versjonen fra et administrativt synspunkt er at 2.0 tillater bruk av hash-tabeller. For eksempel:
$Path = "c:\scripts"$Directory = Get-Acl -Path $PathForEach ($Dir in $Directory.Access){$DirPermissions = New-Object -TypeName PSObject$DirPermissions | Add-Member -MemberType NoteProperty -Name Path -Value $Path$DirPermissions | Add-Member -MemberType NoteProperty -Name Owner -Value $Directory.Owner$DirPermissions | Add-Member -MemberType NoteProperty -Name Group -Value $Dir.IdentityReference$DirPermissions | Add-Member -MemberType NoteProperty -Name AccessType -Value $Dir.AccessControlType$DirPermissions | Add-Member -MemberType NoteProperty -Name Rights -Value $Dir.FileSystemRights$DirPermissions}
Med Metoden New-Object i PowerShell v1. 0 må du deklarere objekttypen du vil opprette og legge til medlemmer i samlingen i individuelle kommandoer. Dette endret seg imidlertid i v2.0 med muligheten til å bruke hashtables:
Nytt Objekt I PS 2.0
$Path = "c:\scripts"$Directory = Get-Acl -Path $PathForEach ($Dir in $Directory.Access){$DirPermissions = New-Object -TypeName PSObject -Property @{'Path' = $Path'Owner' = $Directory.Owner'Group' = $Dir.IdentityReference'AccessType' = $Dir.AccessControlType'Rights' = $Dir.FileSystemRights}$DirPermissions}