About Properties

  • 12/01/2017
  • 5 minuti per leggere
    • S
    • s
    • q

Breve descrizione

Descrive come usare le proprietà degli oggetti in PowerShell.

Descrizione lunga

PowerShell usa collezioni strutturate di informazioni chiamate oggetti per rappresentare gli elementi negli archivi di dati o lo stato del computer. Tipicamente, si lavora con oggetti che fanno parte del Microsoft .NET Framework, ma si possono anche creare oggetti personalizzati in PowerShell.

L’associazione tra un elemento e il suo oggetto è molto stretta. Quando si cambia un oggetto, di solito si cambia l’oggetto che rappresenta. Per esempio, quando si ottiene un file in PowerShell, non si ottiene il file vero e proprio. Invece, si ottiene un oggetto FileInfo che rappresenta il file. Quando cambiate l’oggetto FileInfo, anche il file cambia.

La maggior parte degli oggetti ha delle proprietà. Le proprietà sono i dati associati a un oggetto. Diversi tipi di oggetti hanno diverse proprietà. Per esempio, un oggettoFileInfo, che rappresenta un file, ha una proprietà IsReadOnly che contiene $True se il file ha l’attributo di sola lettura e $False in caso contrario.Un oggetto DirectoryInfo, che rappresenta una directory del file system, ha una proprietà Parent che contiene il percorso della directory padre.

Proprietà degli oggetti

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

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

L’output del comando elenca i membri dell’oggetto FileInfo. 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 parametroMemberType della cmdlet Get-Member con un valore di “property”, come mostrato nell’esempio seguente.

Get-ChildItem $pshome\PowerShell.exe | Get-Member -MemberType property
TypeName: System.IO.FileInfoName 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à, potete usarle nei vostri comandi PowerShell.

Valori delle proprietà

Anche se ogni oggetto di un tipo specifico ha le stesse proprietà, i valori di queste proprietà descrivono l’oggetto particolare. Per esempio, ogni oggettoFileInfo ha una proprietà CreationTime, ma il valore di questa proprietà differisce per ogni file.

Il modo più comune per ottenere i valori delle proprietà di un oggetto è usare il metodo dot. Digitate un riferimento all’oggetto, come una variabile che contiene l’oggetto, o un comando che ottiene l’oggetto. Poi, digitare un punto (.) seguito dal nome della proprietà.

Per esempio, il seguente comando visualizza il valore della proprietà CreationTime del file PowerShell.exe. Il comando Get-ChildItem restituisce un oggettoFileInfo 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 segue:

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

Puoi anche salvare un oggetto in una variabile e poi ottenere le sue proprietà usando il metodo del punto, come mostrato nel seguente esempio:

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

Puoi anche usare i cmdlets Select-Object e Format-List per visualizzare i valori delle proprietà di un oggetto. Select-Object e Format-List hanno ciascuno un parametroProperty. Puoi usare il parametro Property per specificare una o più proprietà e i loro valori. Oppure, puoi usare il carattere jolly (*) per rappresentare tutte le proprietà.

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

Get-ChildItem $pshome\PowerShell.exe | Format-List -Property *
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System3 2\WindowsPowerShell\v1.0\PowerShell.exePSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System3 2\WindowsPowerShell\v1.0PSChildName : PowerShell.exePSDrive : CPSProvider : Microsoft.PowerShell.Core\FileSystemPSIsContainer : FalseMode : -a----VersionInfo : File: C:\Windows\System32\WindowsPowerShell\ v1.0\PowerShell.exe InternalName: POWERSHELL OriginalFilename: PowerShell.EXE.MUI FileVersion: 10.0.16299.15 (WinBuild.160101.0800) FileDescription: Windows PowerShell Product: Microsoft Windows Operating System ProductVersion: 10.0.16299.15 Debug: False Patched: False PreRelease: False PrivateBuild: False SpecialBuild: False Language: English (United States)BaseName : PowerShellTarget : {C:\Windows\WinSxS\amd64_microsoft-windows-powershell-ex e_31bf3856ad364e35_10.0.16299.15_none_8c022aa6735716ae\p owershell.exe}LinkType : HardLinkName : PowerShell.exeLength : 449024DirectoryName : C:\Windows\System32\WindowsPowerShell\v1.0Directory : C:\Windows\System32\WindowsPowerShell\v1.0IsReadOnly : FalseExists : TrueFullName : C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exExtension : .exeCreationTime : 9/29/2017 6:43:19 AMCreationTimeUtc : 9/29/2017 1:43:19 PMLastAccessTime : 9/29/2017 6:43:19 AMLastAccessTimeUtc : 9/29/2017 1:43:19 PMLastWriteTime : 9/29/2017 6:43:19 AMLastWriteTimeUtc : 9/29/2017 1:43:19 PMAttributes : Archive

Proprietà statiche

Puoi 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, usate il parametro Static del cmdlet Get-Member.

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

Get-Date | Get-Member -MemberType Property -Static
TypeName: System.DateTimeName 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, usate la seguente sintassi.

::<Property>

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

::UtcNow

Proprietà degli oggetti scalari e delle collezioni

Le proprietà di un oggetto (“scalare”) di un tipo particolare sono spesso diverse dalle proprietà di una collezione di oggetti dello stesso tipo; per esempio, ogni servizio ha la proprietà DisplayName, ma una collezione di servizi non ha la proprietà DisplayName.

Il seguente comando ottiene il valore della proprietà DisplayName del servizio ‘Audiosrv’.

(Get-Service Audiosrv).DisplayName
Windows Audio

A partire da PowerShell 3.0, PowerShell cerca di prevenire gli errori di scripting che risultano dalle diverse proprietà di oggetti scalari e collezioni. Lo stesso comando restituisce il valore della proprietà DisplayName di ogni servizio che Get-Service restituisce.

(Get-Service).DisplayName
Application ExperienceApplication Layer Gateway ServiceWindows All-User Install AgentApplication IdentityApplication Information...

Quando si invia una collezione, ma si richiede una proprietà che esiste solo su oggetti singoli (“scalari”), PowerShell restituisce il valore di quella proprietà per ogni oggetto nella collezione.

Tutte le collezioni hanno una proprietà Count che restituisce quanti oggetti sono nella collezione.

(Get-Service).Count
176

A partire da PowerShell 3.0, se si richiede la proprietà Count o Length di zero oggetti o di un oggetto, PowerShell restituisce il valore corretto.

(Get-Service Audiosrv).Count
1

Se esiste una proprietà sui singoli oggetti e sulla collezione, viene restituita solo la proprietà della collezione.

$collection = @(@{length = "foo"}@{length = "bar"})# PowerShell returns the collection's Length.$collection.length

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.