Sei sulla pagina 1di 4

ARGOMENTO

about_methods

DESCRIZIONE BREVE
Descrive come utilizzare metodi per eseguire azioni su oggetti in
Windows PowerShell.

DESCRIZIONE DETTAGLIATA
In Windows PowerShell vengono utilizzate raccolte strutturate di
informazioni, dette oggetti, per rappresentare gli elementi degli
archivi dati o lo stato del computer. Ad esempio, quando si accede a
un file in Windows PowerShell, non si utilizza il file effettivo. Si
utilizza invece un oggetto FileInfo, un tipo di oggetto che ha la
funzione di proxy del file.

La maggior parte degli oggetti include metodi. Un metodo è un


insieme di istruzioni che specificano una particolare azione
eseguibile con l'oggetto in questione. Ad esempio, nell'oggetto
FileInfo è incluso un metodo chiamato CopyTo, che consente di
copiare il file rappresentato dall'oggetto.

Per visualizzare un elenco di metodi e relative definizioni


associati a un determinato oggetto, è possibile utilizzare il
cmdlet Get-Member. Tuttavia, per utilizzare il cmdlet, l'oggetto deve
esistere già in qualche forma: come variabile, come oggetto creato al
momento di specificare un comando, come argomento del comando
Get-Member o come oggetto passato attraverso una pipeline.
Si supponga ad esempio che alla variabile $a sia stato assegnato
un valore stringa, il che significa che la variabile è associata a
un oggetto stringa. Per visualizzare un elenco dei metodi dell'oggetto,
immettere il comando seguente al prompt dei comandi di Windows PowerShell:

Get-Member -inputobject $a -membertype method

Se si desidera visualizzare i metodi e le relative definizioni


associati a un oggetto passato attraverso la pipeline, occorre
utilizzare il comando Get-Member nella pipeline, come illustrato
nell'esempio seguente:

Get-ChildItem c:\final.txt | Get-Member -membertype method

Il modo più comune per richiamare un metodo è di specificarne il


nome dopo il riferimento a un oggetto, ad esempio una variabile o
un'espressione. Occorre separare il riferimento all'oggetto dal
metodo mediante un punto. Inoltre, è necessario utilizzare le
parentesi immediatamente dopo il nome del metodo per racchiudere
gli eventuali argomenti da passare al metodo.

Se in una firma di metodo non vengono passati argomenti, è necessario


utilizzare parentesi vuote.
Ad esempio, nel comando seguente viene utilizzato il metodo
GetType() per restituire il tipo di dati associato all'oggetto
stringa $a:

$a.GetType()

Il metodo GetType restituisce il tipo di dati per qualsiasi


oggetto e una variabile rappresenta sempre un oggetto. Il tipo di
oggetto dipende dal tipo di dati archiviati nella variabile.

Ogni azione eseguita in Windows PowerShell è associata a oggetti,


sia che si dichiari una variabile sia che si combinino più
comandi in una pipeline.
Di conseguenza, è possibile utilizzare i metodi in diverse
situazioni. Ad esempio, è possibile utilizzare un metodo per eseguire
un'azione sul valore di una proprietà, come mostrato nel comando seguente:

(Get-ChildItem c:\final.txt).name.ToUpper()

In questo caso l'oggetto per il quale viene richiamato il metodo


ToUpper è l'oggetto stringa associato alla proprietà name. Si
noti che, affinché questo esempio possa funzionare, è necessario
che il file Final.txt si trovi nella radice dell'unità C:. La
proprietà del nome è in effetti una proprietà dell'oggetto FileInfo
restituita dal comando Get-ChildItem. Ciò dimostra non solo la natura
orientata agli oggetti di Windows PowerShell, ma anche come sia
possibile chiamare i metodi per qualsiasi oggetto accessibile.

Lo stesso risultato dell'ultimo esempio può essere ottenuto


mediante una variabile che archivi l'output del comando
Get-ChildItem, come illustrato nell'esempio seguente:

$a = (Get-ChildItem c:\final.txt).name
$a.ToUpper()

Nel comando viene nuovamente utilizzato il metodo ToUpper()


dell'oggetto stringa associato alla variabile, che contiene il
nome file restituito dal comando Get-ChildItem.

In alcuni casi un metodo richiede un argomento per dirigerne


l'azione. Ad esempio, nell'oggetto FileInfo è incluso il metodo
MoveTo, che consente di spostare un file da un percorso a un altro.
Il metodo richiede un argomento che specifichi il percorso di
destinazione del file. Il comando seguente illustra come includere
tale argomento:

(Get-ChildItem c:\final.txt).MoveTo("c:\techdocs\final.txt")
Il comando Get-ChildItem restituisce un oggetto FileInfo per il file
Final.txt e utilizza il metodo MoveTo di tale oggetto per iniziare
l'azione e specificare il nuovo percorso del file.

Per determinare gli argomenti associati a un metodo, esaminare la


corrispondente definizione di metodo. Una definizione di metodo
contiene una o più firme di metodo, note anche come overload in
Microsoft .NET Framework. Una firma di metodo contiene il nome di un
metodo e zero o più parametri che occorre fornire quando il metodo
viene chiamato. Ogni firma di metodo è separata da quella precedente
mediante una virgola nella visualizzazione del cmdlet Get-Member. Ad
esempio, il metodo CopyTo della classe FileInfo contiene le due firme
di metodo seguenti:

1. CopyTo(String destFileName)
2. CopyTo(String destFileName, Boolean overwrite)

La prima firma di metodo acquisisce il nome file di destinazione,


incluso il percorso, in cui copiare il file di origine. Nell'esempio
seguente il primo metodo CopyTo è utilizzato per copiare Final.txt
nella directory C:\Bin:

(Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt")

Se il file è già presente nel percorso di destinazione, il metodo


CopyTo ha esito negativo e Windows PowerShell segnala l'errore
seguente:

Eccezione durante la chiamata di "CopyTo" con "1"


argomento/i: "Il file 'c:\bin\final.txt' esiste già.".

Nella seconda firma di metodo viene passato il nome file di


destinazione esattamente come nel primo caso, ma viene anche
passato un valore booleano per specificare se si desidera
sovrascrivere un file esistente con lo stesso nome nel percorso di
destinazione, come illustrato nell'esempio seguente:

(Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt", $true)

Quando si passa il valore booleano, è necessario utilizzare la


variabile $True, che viene creata automaticamente da Windows
PowerShell. La variabile $True contiene il valore booleano "true".
Ovviamente, la variabile $False contiene invece il valore booleano
"false".

VEDERE ANCHE
about_Objects
Get-Member

Potrebbero piacerti anche