Nome provider

FileSystem

Unità

C, D

Descrizione breve

Consente di accedere a file e directory.

Descrizione dettagliata

Il provider FileSystem di Windows PowerShell consente di ottenere, aggiungere, modificare, cancellare ed eliminare file e directory in Windows PowerShell.

Il provider FileSystem espone le unità di Windows PowerShell che corrispondono alle unità logiche configurate nel computer, incluse le unità mappate a condivisioni di rete. Ad esempio, un computer con un'unità floppy, un'unità disco rigido e una directory di rete condivisa mappata potrebbe disporre di unità con i nomi A, C e Z. Il provider FileSystem espone le unità di Windows PowerShell che corrispondono direttamente ad A, C e Z, consentendo di fare riferimento a tali unità da Windows PowerShell. Per fare riferimento all'unità C, ad esempio, si utilizzerà C:, come illustrato nell'esempio seguente:

Get-ChildItem c:

Tramite il comando viene restituito tutto il contenuto dell'unità C, inclusi i file e le directory. Quando si fa riferimento a una directory o a un file specifico tramite il provider FileSystem, è necessario fornire le informazioni appropriate per identificare la directory o il file. Ciò significa che, in alcuni casi, è necessario fornire un nome completo. Un nome completo include il nome di unità (insieme a un carattere due punti), qualsiasi nome di directory e di sottodirectory e il nome file (quando possibile). Nell'esempio seguente viene indicato il nome completo del file Shell.dll, presente nella sottodirectory System32 della directory Windows nell'unità C:

c:\windows\system32\shell.dll

Tutti gli elementi del nome completo sono separati da una barra rovesciata (\). Windows PowerShell consente inoltre di utilizzare una barra (/) per garantire la coerenza con un'ampia gamma di altre shell.

In alcuni casi, non è necessario specificare un nome completo quando si fa riferimento a un file o a una directory. Se, ad esempio, si desidera accedere a un file nel percorso di lavoro corrente, è necessario fornire solo il nome file. Se il percorso di lavoro corrente è c:\windows, è possibile visualizzare un elenco di tutti i file con estensione dll in tale directory tramite il comando seguente:

Get-ChildItem *.dll

Se la directory di lavoro è diversa da c:\windows, ad esempio c:\Programmi\Windows PowerShell, potrebbe essere necessario includere il nome completo nel comando:

Get-ChildItem c:\windows\*.dll

In alcuni casi, è possibile utilizzare riferimenti relativi a un percorso. Se il percorso di lavoro è c:\windows e si desidera visualizzare un elenco dei file con estensione dll nella directory c:\windows\system32, è possibile utilizzare il comando seguente:

Get-ChildItem .\system32\*.dll

Il punto che precede \system32 rappresenta il percorso di lavoro corrente.

In alcune situazioni, il percorso di lavoro corrente corrisponderà a un'unità diversa da FileSystem. In tal caso, sarà necessario includere sempre il nome dell'unità di destinazione nel riferimento. Si supponga, ad esempio, che il percorso di lavoro corrente sia l'unità env:. Per visualizzare il contenuto dell'unità C, si utilizzerà il comando seguente:

Get-ChildItem c:

Esempi

Spostamento nel file system

-------------------------- ESEMPIO 1 --------------------------

Con questo comando si ottiene il percorso corrente:

get-location

Nel cmdlet Get-Location sono incluse le funzionalità di comandi quali 'cd' nel prompt dei comandi di Windows e 'pwd' in UNIX. Per ulteriori informazioni, digitare: get-help get-location

-------------------------- ESEMPIO 2 --------------------------

Con questo comando viene impostato il percorso corrente:

set-location C:

Recupero di informazioni su file e directory

-------------------------- ESEMPIO 1 --------------------------

Con questo comando si ottengono tutti i file e le directory nella directory corrente:

get-childitem

Per impostazione predefinita, il cmdlet Get-ChildItem non esegue la ricerca ricorsiva. Se quando si esegue il comando la directory corrente contiene file e cartelle, verranno restituiti gli oggetti System.IO.FileInfo e System.IO.DirectoryInfo.

-------------------------- ESEMPIO 2 --------------------------

Con questo comando si ottengono tutti i file e le directory nella directory corrente tramite Get-ChildItem:

get-childitem | where-object {!$_.psiscontainer}

I risultati vengono reindirizzati a Where-Object, tramite cui viene esaminata la proprietà PSIsContainer e vengono mantenuti nella pipeline solo gli oggetti che non sono contenitori.

-------------------------- ESEMPIO 3 --------------------------

Con questo comando si ottengono tutti i file e le directory nella directory corrente tramite Get-ChildItem. I risultati vengono reindirizzati a Where-Object, tramite cui viene esaminata la proprietà PSIsContainer e vengono mantenuti nella pipeline solo gli oggetti che non sono contenitori.

get-childitem | where-object {$_.psiscontainer}

-------------------------- ESEMPIO 4 --------------------------

Con questo comando si ottengono tutti i file e le directory nella directory corrente tramite Get-ChildItem:

get-item -path a | format-list *

I risultati vengono reindirizzati al cmdlet Where-Object, tramite cui viene esaminata la proprietà PSIsContainer e vengono mantenuti nella pipeline solo gli oggetti che non sono contenitori.

-------------------------- ESEMPIO 5 --------------------------

In questo comando viene utilizzato il cmdlet Get-Item per ottenere informazioni sul file Test.txt:

get-item -path test.txt | format-list *

Viene utilizzato il cmdlet Format-List per visualizzare tutte le proprietà dell'oggetto risultante.

Copia di file e directory

-------------------------- ESEMPIO 1 --------------------------

Con questo comando il file A.txt viene copiato dalla directory C:\A alla directory C:\A\Bb.

copy-item -path C:\a\a.txt -destination C:\a\bb\a.txt

Sovrascrive i file nella directory di destinazione senza richiedere conferma.

-------------------------- ESEMPIO 2 --------------------------

Con questo comando vengono copiati tutti i file con estensione txt della directory C:\A\Bb nella directory C:\A\Cc\Ccc\:

copy-item -path C:\a\bb\*.txt -destination C:\a\cc\ccc\

Utilizza i nomi originali dei file. Con questo comando i file esistenti nella directory di destinazione vengono sovrascritti senza richiedere conferma.

-------------------------- ESEMPIO 3 --------------------------

Copia nella directory C:\c tutte le directory e tutti i file inclusi nella directory C:\a. Se una o più directory da copiare sono già presenti nella directory di destinazione, il comando avrà esito negativo, a meno che non si specifichi il parametro Force.

copy-item -path C:\a\* -destination C:\c -recurse

Spostamento di file e directory

-------------------------- ESEMPIO 1 --------------------------

Con questo comando il file C.txt incluso nella directory C:\A viene spostato nella directory C:\A\Aa.

move-item -path C:\a\c.txt -destination C:\a\aa

Il comando non sovrascriverà automaticamente un file esistente con lo stesso nome. Per forzare la sovrascrittura di un file esistente da parte del cmdlet, specificare il parametro Force.

-------------------------- ESEMPIO 2 --------------------------

Con questo comando la directory C:\A e il relativo contenuto viene spostata nella directory C:\B:

move-item -path C:\a -destination C:\b

Non è possibile spostare una directory che costituisce il percorso corrente.

Gestione del contenuto dei file

-------------------------- ESEMPIO 1 --------------------------

Con questo comando viene aggiunta la stringa "contenuto di prova" al file Test.txt:

add-content -path test.txt -value "test content"

Il contenuto esistente nel file Test.txt non verrà eliminato.

-------------------------- ESEMPIO 2 --------------------------

Con questo comando viene ottenuto il contenuto del file Test.txt e visualizzato nella console:

get-content -path test.txt

È possibile reindirizzare il contenuto del file a un altro cmdlet. Con il comando seguente, ad esempio, viene letto il contenuto del file Test.txt, quindi viene inviato come input al cmdlet ConvertTo-HTML: get-content -path test.txt | convertto-html

-------------------------- ESEMPIO 3 --------------------------

Con questo comando viene sostituito il contenuto del file Test.txt con la stringa "contenuto di prova":

set-content -path test.txt -value "test content"

Viene sovrascritto il contenuto del file Test.txt. È possibile utilizzare il parametro Value del cmdlet New-Item per aggiungere contenuto a un file quando lo si crea.

Gestione dei descrittori di sicurezza

-------------------------- ESEMPIO 1 --------------------------

Con questo comando viene restituito un oggetto System.Security.AccessControl.FileSecurity:

get-acl -path test.txt | format-list -property *

Per ulteriori informazioni su questo oggetto, reindirizzare il comando al cmdlet Get-Member. Oppure vedere l'argomento relativo alla classe FileSecurity in MSDN Library all'indirizzo https://go.microsoft.com/fwlink/?LinkId=145718 (le informazioni potrebbero essere in lingua inglese).

-------------------------- ESEMPIO 2 --------------------------

Con questo comando viene restituito un oggetto System.Security.AccessControl.DirectorySecurity:

get-acl -path test_directory | format-list -property *

Per ulteriori informazioni su questo oggetto, reindirizzare il comando al cmdlet Get-Member. Oppure vedere l'argomento relativo alla classe DirectorySecurity in MSDN Library all'indirizzo https://go.microsoft.com/fwlink/?LinkId=145736 (le informazioni potrebbero essere in lingua inglese).

Creazione di file e directory

-------------------------- ESEMPIO 1 --------------------------

Con questo comando viene creata una directory Logfiles nell'unità C:

new-item -path c:\ -name logfiles -type directory

-------------------------- ESEMPIO 2 --------------------------

Con questo comando viene creato il file Log2.txt nella directory C:\Logsfiles, quindi viene aggiunta la stringa "registro di prova" al file:

new-item -path c:\logfiles -name log.txt -type file

-------------------------- ESEMPIO 3 --------------------------

Crea un file denominato Log2.txt nella directory C:\logfiles e quindi aggiunge la stringa "registro di prova" al file.

new-item -path c:\logfiles -name log2.txt -type file -value "test log"

Ridenominazione di file e directory

-------------------------- ESEMPIO 1 --------------------------

Con questo comando il file A.txt incluso nella directory C:\A viene rinominato in B.txt:

rename-item -path c:\a\a.txt -newname b.txt

-------------------------- ESEMPIO 2 --------------------------

Con questo comando la directory C:\A\Cc viene rinominata in C:\A\Dd:

rename-item -path c:\a\cc -newname dd

Eliminazione di file e directory

-------------------------- ESEMPIO 1 --------------------------

Con questo comando viene eliminato il file Test.txt dalla directory corrente:

remove-item -path test.txt

-------------------------- ESEMPIO 2 --------------------------

Con questo comando vengono eliminati tutti i file nella directory corrente con estensione xml:

remove-item -path *.xml

Avvio di un programma tramite la richiamata di un file associato

-------------------------- ESEMPIO 1 --------------------------

Con il primo comando viene utilizzato il cmdlet Get-Service per ottenere informazioni sui servizi locali.

Le informazioni vengono reindirizzate al cmdlet Export-Csv, quindi vengono archiviate nel file Services.csv.

Con il secondo comando viene utilizzato Invoke-Item per aprire il file Services.csv nel programma associato all'estensione csv:

get-service | export-csv -path services.csv

invoke-item -path services.csv

Parametri dinamici

I parametri dinamici sono parametri di cmdlet aggiunti da un provider di Windows PowerShell e disponibili solo quando il cmdlet viene utilizzato nell'unità abilitata dal provider.

Encoding <Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding>

Value Description

Unknown

Il tipo di codifica è sconosciuto o non valido. I dati possono essere trattati come binari.

String

Utilizza il tipo di codifica per una stringa.

Unicode

Codifica in formato UTF-16 utilizzando l'ordine di byte little-endian.

Byte

Codifica un set di caratteri in una sequenza di byte.

BigEndianUnicode

Codifica in formato UTF-16 utilizzando l'ordine di byte big-endian.

UTF8

Codifica in formato UTF-8.

UTF7

Codifica in formato UTF-7.

ASCII

Utilizza la codifica per il set di caratteri ASCII (7 bit).

Cmdlet supportati

Delimiter <System.String>

Specifica il delimitatore da utilizzare per la lettura del file. L'impostazione predefinita è "\n" (fine riga).

Cmdlet supportati

Wait <System.Management.Automation.SwitchParameter>

Attende che venga aggiunto contenuto al file. Se viene aggiunto contenuto, restituisce tale contenuto aggiunto. Se il contenuto viene modificato, restituisce l'intero file.

Durante l'attesa, tramite Get-Content il file viene verificato una volta al secondo finché non si interrompe la verifica, ad esempio premendo CTRL+C.

Cmdlet supportati

Vedere anche




Argomenti della Guida