about_Properties
Descrizione breve
Viene descritto come usare le proprietà degli oggetti in PowerShell.
Descrizione lunga
PowerShell usa raccolte strutturate di informazioni denominate oggetti per rappresentare gli elementi negli archivi dati o lo stato del computer. In genere, si lavora con oggetti che fanno parte di Microsoft .NET Framework, ma è anche possibile creare oggetti personalizzati in PowerShell.
L'associazione tra un elemento e il relativo oggetto è molto vicina. Quando si modifica un oggetto, in genere si modifica l'elemento rappresentato. Ad esempio, quando si ottiene un file in 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 cambia.
La maggior parte degli oggetti ha proprietà. Le proprietà sono i dati associati a un oggetto . Diversi tipi di oggetto hanno proprietà diverse. Ad esempio, un oggetto FileInfo , che rappresenta un file, ha una proprietà IsReadOnly che contiene se il file ha $True
l'attributo 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à degli oggetti
Per ottenere le proprietà di un oggetto, usare il Get-Member
cmdlet . Ad esempio, per ottenere le proprietà di un oggetto FileInfo , utilizzare il Get-ChildItem
cmdlet per ottenere l'oggetto FileInfo che rappresenta un file. Usare quindi un operatore pipeline (|
) per inviare l'oggetto FileInfo a Get-Member
. Il comando seguente ottiene il pwsh.exe
file e lo invia a Get-Member
. La $PSHOME
variabile automatica contiene il percorso della directory di installazione di PowerShell.
Get-ChildItem $PSHOME\pwsh.exe | Get-Member
L'output del comando elenca i membri dell'oggetto FileInfo . I membri includono sia proprietà che metodi. Quando si lavora in PowerShell, si ha accesso a tutti i membri degli oggetti.
Per ottenere solo le proprietà di un oggetto e non i metodi , utilizzare il parametro MemberType del Get-Member
cmdlet con un valore , Property
come illustrato nell'esempio seguente.
Get-ChildItem $PSHOME\pwsh.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 trovato le proprietà, è possibile usarle nei comandi di PowerShell.
Valori delle proprietà
Anche se ogni oggetto di un tipo specifico ha le stesse proprietà, i valori di tali proprietà descrivono l'oggetto specifico. Ad esempio, ogni oggetto FileInfo ha una proprietà CreationTime , ma il valore di tale proprietà è diverso per ogni file.
Il modo più comune per ottenere i valori delle proprietà di un oggetto consiste nell'usare l'operatore di accesso ai membri (.
). Digitare un riferimento all'oggetto, ad esempio una variabile che contiene l'oggetto o un comando che ottiene l'oggetto . Digitare quindi l'operatore (.
) seguito dal nome della proprietà.
Ad esempio, il comando seguente visualizza il valore della proprietà CreationTime del pwsh.exe
file. Il Get-ChildItem
comando restituisce un oggetto FileInfo che rappresenta l'oggetto pwsh.exe file
. Il comando è racchiuso tra parentesi per assicurarsi che venga eseguito prima dell'accesso a qualsiasi proprietà.
(Get-ChildItem $PSHOME\pwsh.exe).CreationTime
Tuesday, June 14, 2022 5:17:14 PM
È anche possibile salvare un oggetto in una variabile e quindi ottenere le relative proprietà usando il metodo di accesso ai membri (.
), come illustrato nell'esempio seguente:
$a = Get-ChildItem $PSHOME\pwsh.exe
$a.CreationTime
Tuesday, June 14, 2022 5:17:14 PM
È anche possibile utilizzare i Select-Object
cmdlet e Format-List
per visualizzare i valori delle proprietà di un oggetto . Select-Object
e Format-List
ognuno ha un parametro Property . È possibile utilizzare il parametro Property per specificare una o più proprietà e i relativi valori. In alternativa, è possibile usare il carattere jolly (*
) per rappresentare tutte le proprietà.
Ad esempio, il comando seguente visualizza i valori di tutte le proprietà del file pwsh.exe.
Get-ChildItem $PSHOME\pwsh.exe | Format-List -Property *
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7-preview\pwsh.exe
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7-preview
PSChildName : pwsh.exe
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
Mode : -a---
ModeWithoutHardLink : -a---
VersionInfo : File: C:\Program Files\PowerShell\7-preview\pwsh.exe
InternalName: pwsh.dll
OriginalFilename: pwsh.dll
FileVersion: 7.3.0.5
FileDescription: pwsh
Product: PowerShell
ProductVersion: 7.3.0-preview.5 SHA: cfc237ac85cf24fa760923ace568201c8f3256aa
Debug: False
Patched: False
PreRelease: False
PrivateBuild: False
SpecialBuild: False
Language: Language Neutral
BaseName : pwsh
ResolvedTarget : C:\Program Files\PowerShell\7-preview\pwsh.exe
Target :
LinkType :
Length : 285088
DirectoryName : C:\Program Files\PowerShell\7-preview
Directory : C:\Program Files\PowerShell\7-preview
IsReadOnly : False
FullName : C:\Program Files\PowerShell\7-preview\pwsh.exe
Extension : .exe
Name : pwsh.exe
Exists : True
CreationTime : 6/14/2022 5:17:14 PM
CreationTimeUtc : 6/14/2022 10:17:14 PM
LastAccessTime : 7/18/2022 11:32:06 AM
LastAccessTimeUtc : 7/18/2022 4:32:06 PM
LastWriteTime : 6/14/2022 5:17:14 PM
LastWriteTimeUtc : 6/14/2022 10:17:14 PM
LinkTarget :
Attributes : Archive
Proprietà statiche
È possibile usare le proprietà statiche delle classi .NET in 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, usare il parametro Static del Get-Member
cmdlet . Ad esempio, il comando seguente ottiene le proprietà statiche della System.DateTime
classe .
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 System.DateTime
classe .
[System.DateTime]::UtcNow
Enumerazione member-access
A partire da PowerShell 3.0, quando si usa l'operatore di accesso ai membri (.
) per accedere a una proprietà che non esiste in una raccolta di elenchi, PowerShell enumera automaticamente gli elementi nella raccolta e restituisce il valore della proprietà in ogni elemento. Per altre informazioni, vedere about_Member-Access_Enumeration.
Esempi
Questo comando restituisce il valore della proprietà DisplayName di ogni servizio restituito Get-Service
.
(Get-Service).DisplayName
Application Experience
Application Layer Gateway Service
Windows All-User Install Agent
Application Identity
Application Information
...
Tutte le raccolte hanno una proprietà Count che restituisce il numero di oggetti nell'insieme.
(Get-Service).Count
176
A partire da PowerShell 3.0, è possibile ottenere la proprietà Count o Length di oggetti singleton che non sono raccolte.
(Get-Service Audiosrv).Count
1
Tuttavia, alcuni oggetti hanno una proprietà Length . Ad esempio, la lunghezza di una stringa è il numero di caratteri nella stringa. La proprietà Count è il numero di istanze dell'oggetto .
PS> $str = 'string'
PS> $str.Length
6
PS> $str.Count
1
Se esiste una proprietà nei singoli oggetti e nell'insieme, viene restituita solo la proprietà della raccolta.
$collection = @(
[pscustomobject]@{length = "foo"}
[pscustomobject]@{length = "bar"}
)
# PowerShell returns the collection's Length.
$collection.length
2