about_Properties

Aggiornamento: maggio 2014

Si applica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

ARGOMENTO

about_Properties

DESCRIZIONE BREVE

Viene descritto come usare le proprietà degli oggetti in Windows PowerShell.

DESCRIZIONE LUNGA

In Windows PowerShell vengono utilizzate le raccolte strutturate di informazioni denominate oggetti per rappresentare gli elementi negli archivi dati o lo stato del computer. In genere, si utilizzano oggetti che fanno parte di Microsoft .NET Framework, ma è anche possibile creare oggetti personalizzati in Windows PowerShell.

L'associazione tra un elemento e il relativo oggetto è molto simile. Quando si modifica un oggetto, in genere viene modificato l'elemento rappresentato. Ad esempio, quando si ottiene un file in Windows PowerShell, non si ottiene il file effettivo. Si ottiene, invece, un oggetto FileInfo che rappresenta il file. Quando si modifica l'oggetto FileInfo, anche il file viene modificato.

La maggior parte degli oggetti dispone di proprietà. Le proprietà sono i dati associati a un oggetto. Diversi tipi di oggetto hanno proprietà differenti. Ad esempio, un oggetto FileInfo che rappresenta un file, dispone di una proprietà IsReadOnly contenente $True se l'attributo del file è di sola lettura e $False in caso contrario. Un oggetto DirectoryInfo, che rappresenta una directory del file system, dispone di una proprietà Parent che contiene il percorso della directory padre.

PROPRIETÀ DELL'OGGETTO

Per ottenere le proprietà di un oggetto, utilizzare il cmdlet Get-Member. Ad esempio, per ottenere le proprietà di un oggetto FileInfo, utilizzare il cmdlet Get-ChildItem per ottenere l'oggetto FileInfo che rappresenta un file. Quindi, utilizzare un operatore pipeline (|) per inviare l'oggetto FileInfo a Get-Member. Il comando seguente ottiene il file PowerShell.exe e lo invia a Get-Member. La variabile automatica $Pshome contiene il percorso della directory di installazione di Windows PowerShell.

         Get-ChildItem $pshome\PowerShell.exe | Get-Member

L'output del comando elenca i membri dell'oggetto FileInfo. I membri includono metodi e proprietà. Quando si lavora in Windows PowerShell, sarà possibile accedere a tutti i membri degli oggetti.

Per ottenere solo le proprietà di un oggetto e non i metodi, utilizzare il parametro MemberType del cmdlet Get-Member con un valore di "property", come illustrato nell'esempio seguente.

         Get-ChildItem $pshome\PowerShell.exe | Get-Member -MemberType property

            TypeName: System.IO.FileInfo
        
         Name              MemberType Definition
         ----              ---------- ----------
         Attributes        Property   System.IO.FileAttributes Attributes {get;set;}
         CreationTime      Property   System.DateTime CreationTime {get;set;}
         CreationTimeUtc   Property   System.DateTime CreationTimeUtc {get;set;}
         Directory         Property   System.IO.DirectoryInfo Directory {get;}
         DirectoryName     Property   System.String DirectoryName {get;}
         Exists            Property   System.Boolean Exists {get;}
         Extension         Property   System.String Extension {get;}
         FullName          Property   System.String FullName {get;}
         IsReadOnly        Property   System.Boolean IsReadOnly {get;set;}
         LastAccessTime    Property   System.DateTime LastAccessTime {get;set;}
         LastAccessTimeUtc Property   System.DateTime LastAccessTimeUtc {get;set;}
         LastWriteTime     Property   System.DateTime LastWriteTime {get;set;}
         LastWriteTimeUtc  Property   System.DateTime LastWriteTimeUtc {get;set;}
         Length            Property   System.Int64 Length {get;}
         Name              Property   System.String Name {get;}

Dopo aver individuato le proprietà, è possibile utilizzarle nei comandi Windows PowerShell.

VALORI DELLE PROPRIETÀ

Sebbene ogni oggetto di un tipo specifico abbia le stesse proprietà, i valori di queste proprietà descrivono l'oggetto particolare. Ad esempio, ogni oggetto FileInfo dispone di una proprietà CreationTime, ma il valore di tale proprietà è diverso per ciascun file.

Il modo più comune per ottenere i valori delle proprietà di un oggetto consiste nell'utilizzare il metodo del punto. Digitare un riferimento all'oggetto, ad esempio una variabile che contiene l'oggetto o un comando che ottiene l'oggetto. Quindi digitare un punto (.) seguito dal nome della proprietà.

Ad esempio, il comando seguente visualizza il valore della proprietà CreationTime del file PowerShell.exe. Il comando Get-ChildItem restituisce un oggetto FileInfo che rappresenta il file PowerShell.exe. Il comando è racchiuso tra parentesi per assicurarsi che venga eseguito prima di accedere a qualsiasi proprietà. Il comando Get-ChildItem è seguito da un punto e dal nome della proprietà CreationTime, come indicato di seguito:

         C:\PS> (Get-ChildItem $pshome\PowerShell.exe).creationtime
         Tuesday, March 18, 2008 12:07:52 AM

È possibile inoltre salvare un oggetto in una variabile e quindi ottenere le relative proprietà utilizzando il metodo del punto, come illustrato nell'esempio seguente:

         C:\PS> $a = Get-ChildItem $pshome\PowerShell.exe
         C:\PS> $a.CreationTime
         Tuesday, March 18, 2008 12:07:52 AM

È inoltre possibile utilizzare i cmdlet Select-Object e Format-List per visualizzare i valori di proprietà di un oggetto. Select-Object e Format-List dispongono di un parametro Property che può essere utilizzato per specificare una o più proprietà e i relativi valori. In alternativa, è possibile utilizzare il carattere jolly (*) per rappresentare tutte le proprietà.

Ad esempio, il comando seguente visualizza i valori di tutte le proprietà del file PowerShell.exe.

         C:\PS> Get-ChildItem $pshome\PowerShell.exe | Format-List -property *

         PSPath            : Microsoft.PowerShell.Core\FileSystem::C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell.exe
         PSParentPath      : Microsoft.PowerShell.Core\FileSystem::C:\Windows\system32\WindowsPowerShell\v1.0
         PSChildName       : PowerShell.exe
         PSDrive           : C
         PSProvider        : Microsoft.PowerShell.Core\FileSystem
         PSIsContainer     : False
         VersionInfo       : File:             C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell.exe
                             InternalName:     POWERSHELL
                             OriginalFilename: PowerShell.EXE.MUI
                             File Version:      6.1.6570.1 (fbl_srv_PowerShell(nigels).070711-0102)
                             FileDescription:  PowerShell.EXE
                             Product:          Microsoft® Windows® Operating System
                             ProductVersion:   6.1.6570.1
                             Debug:            False
                             Patched:          False
                             PreRelease:       False
                             PrivateBuild:     True
                             SpecialBuild:     False
                             Language:         English (United States)

         BaseName          : PowerShell
         Mode              : -a---
         Name              : PowerShell.exe
         Length            : 160256
         DirectoryName     : C:\Windows\system32\WindowsPowerShell\v1.0
         Directory         : C:\Windows\system32\WindowsPowerShell\v1.0
         IsReadOnly        : False
         Exists            : True
         FullName          : C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell.exe
         Extension         : .exe
         CreationTime      : 3/18/2008 12:07:52 AM
         CreationTimeUtc   : 3/18/2008 7:07:52 AM
         LastAccessTime    : 3/19/2008 8:13:58 AM
         LastAccessTimeUtc : 3/19/2008 3:13:58 PM
         LastWriteTime     : 3/18/2008 12:07:52 AM
         LastWriteTimeUtc  : 3/18/2008 7:07:52 AM
         Attributes        : Archive
        

PROPRIETÀ STATICHE

È possibile utilizzare le proprietà statiche di classi .NET in Windows PowerShell. Le proprietà statiche sono proprietà della classe, a differenza delle proprietà standard, che sono proprietà di un oggetto.

Per ottenere le proprietà statiche di una classe, utilizzare il parametro Static del cmdlet Get-Member.

Ad esempio, il comando seguente ottiene le proprietà statiche della classe System.DateTime.

        Get-Date | Get-Member -MemberType Property -Static

           TypeName: System.DateTime

        Name     MemberType Definition
        ----     ---------- ----------
        MaxValue Property   static datetime MaxValue {get;}
        MinValue Property   static datetime MinValue {get;}
        Now      Property   datetime Now {get;}
        Today    Property   datetime Today {get;}
        UtcNow   Property   datetime UtcNow {get;}

Per ottenere il valore di una proprietà statica, utilizzare la sintassi seguente.

        [<ClassName>]::<Property>

Ad esempio, il comando seguente ottiene il valore della proprietà statica UtcNow della classe System.DateTime.

        [System.DateTime]::UtcNow

PROPRIETÀ DI OGGETTI SCALARI E RACCOLTE

Le proprietà di un oggetto ("scalare") di un determinato tipo spesso sono diverse dalle proprietà di una raccolta di oggetti dello stesso tipo.

Ad esempio, ogni servizio dispone di una proprietà DisplayName, ma una raccolta di servizi non dispone di una proprietà DisplayName. Allo stesso modo, tutte le raccolte hanno una proprietà Count che indica il numero di oggetti presenti nella raccolta, ma i singoli oggetti non dispongono di una proprietà Count.

A partire da Windows PowerShell 3.0, Windows PowerShell tenta di impedire gli errori di scripting risultanti dalle diverse proprietà di oggetti scalari e raccolte.

-- Se si invia una raccolta, ma si richiede una proprietà che esiste solo su singoli oggetti ("scalari"), Windows PowerShell restituisce il valore della proprietà per ogni oggetto nella raccolta.

-- Se si richiede la proprietà Count o Length di zero oggetti o di un oggetto, Windows PowerShell restituisce il valore corretto.

Se la proprietà esiste sui singoli oggetti e sulla raccolta, Windows PowerShell non altera il risultato.

Questa funzionalità funziona anche sui metodi di oggetti scalari e raccolte. Per ulteriori informazioni, vedere about_Methods.

ESEMPI

Ad esempio, ciascun servizio dispone di una proprietà DisplayName. Il comando seguente ottiene il valore della proprietà DisplayName del servizio Audiosrv.

        PS C:\>(Get-Service Audiosrv).DisplayName
        Windows Audio

Tuttavia, una raccolta o una matrice di servizi non dispone di un DisplayName. Il seguente comando tenta di ottenere la proprietà DisplayName di tutti i servizi in Windows PowerShell 2.0.

        PS C:\>(Get-Service).DisplayName
        PS C:\>

A partire da Windows PowerShell 3.0, lo stesso comando restituisce il valore della proprietà DisplayName di ogni servizio restituito da Get-Service.

        PS C:\>(Get-Service).DisplayName
        Application Experience
        Application Layer Gateway Service
        Windows All-User Install Agent
        Application Identity
        Application Information
        ...

Al contrario, una raccolta di due o più servizi dispone di una proprietà di Count che contiene il numero di oggetti nella raccolta.

        PS C:\>(Get-Service).Count
        176

I servizi singoli non dispongono di una proprietà Count o Length, come illustrato nel comando in Windows PowerShell 2.0.

        PS C:\>(Get-Service Audiosrv).Count
        PS C:\>

A partire da Windows PowerShell 3.0, il comando restituisce il valore Count corretto.

        PS C:\>(Get-Service Audiosrv).Count
        1

VEDERE ANCHE

about_Methods

about_Objects

Get-Member

Select-Object

Format-List