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