Condividi tramite


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 powershell.exe file e lo invia a Get-Member. La $PSHOME variabile automatica contiene il percorso della directory di installazione di PowerShell.

Get-ChildItem $PSHOME\powershell.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 , Propertycome 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 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 powershell.exe file. Il Get-ChildItem comando restituisce un oggetto FileInfo che rappresenta l'oggetto powershell.exe file. Il comando è racchiuso tra parentesi per assicurarsi che venga eseguito prima dell'accesso a qualsiasi proprietà.

(Get-ChildItem $PSHOME\powershell.exe).CreationTime
Saturday, June 5, 2021 7:07:00 AM

È 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\powershell.exe
$a.CreationTime
Wednesday, January 24, 2024 1:18:29 AM

È 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 powershell.exe file.

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
Mode              : -a----
VersionInfo       : File:             C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
                    InternalName:     POWERSHELL
                    OriginalFilename: PowerShell.EXE.MUI
                    FileVersion:      10.0.22621.1 (WinBuild.160101.0800)
                    FileDescription:  Windows PowerShell
                    Product:          Microsoft® Windows® Operating System
                    ProductVersion:   10.0.22621.1
                    Debug:            False
                    Patched:          False
                    PreRelease:       False
                    PrivateBuild:     False
                    SpecialBuild:     False
                    Language:         English (United States)

BaseName          : powershell
Target            : {C:\Windows\WinSxS\amd64_microsoft-windows-powershell-exe_31bf3856ad364e35_10.0.22621.3085_none_492
                    e8ee57da24e0e\powershell.exe}
LinkType          : HardLink
Name              : powershell.exe
Length            : 450560
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      : 1/24/2024 1:18:29 AM
CreationTimeUtc   : 1/24/2024 7:18:29 AM
LastAccessTime    : 1/3/2025 1:36:20 PM
LastAccessTimeUtc : 1/3/2025 7:36:20 PM
LastWriteTime     : 1/24/2024 1:18:29 AM
LastWriteTimeUtc  : 1/24/2024 7:18:29 AM
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'istanza dell'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, PowerShell enumera automaticamente gli elementi nell'insieme e restituisce il valore della proprietà per ogni elemento.

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
...

La maggior parte delle raccolte in PowerShell dispone di una proprietà Count che restituisce il numero di elementi nella raccolta.

(Get-Service).Count
176

Se esiste una proprietà nei singoli oggetti e nell'insieme, viene restituita solo la proprietà della raccolta.

PS> $collection = @(
     [pscustomobject]@{Length = "foo"}
     [pscustomobject]@{Length = "bar"}
)

# PowerShell returns the collection's Length.
$collection.Length
2

# Get the length property of each item in the collection.
PS> $collection.GetEnumerator().Length
foo
bar

Per altre informazioni, vedere about_Member-Access_Enumeration.

Vedi anche