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