Condividi tramite


informazioni su FileSystem_Provider

Nome del fornitore

File System

Dischi

C:, D:, Temp: ...

Capacità

Filter, ShouldProcess

Breve descrizione

Fornisce l'accesso a file e directory.

Descrizione dettagliata

Il provider FileSystem di PowerShell consente di visualizzare, aggiungere, modificare, cancellare e rimuovere file e directory in PowerShell.

Le unità file system sono uno spazio dei nomi gerarchico contenente le directory e i file nel tuo computer. Un'unità FileSystem può essere un'unità logica o fisica, una directory o una condivisione di rete mappata.

A partire da PowerShell versione 7.0, un'unità chiamata Temp: viene mappata al percorso della directory temporanea dell'utente. PowerShell usa il metodo di GetTempPath() di .NET per determinare il percorso della cartella temporanea. Su Windows, il percorso è uguale a $Env:TEMP. Nei sistemi non Windows, la posizione è uguale a $Env:TMPDIR o /tmp se la variabile di ambiente non è definita.

Il provider FileSystem supporta i cmdlet seguenti, illustrati in questo articolo.

Tipi esposti da questo provider

I file sono istanze della classe System.IO.FileInfo . Le directory sono istanze della classe System.IO.DirectoryInfo .

Il sistema di tipi estesi di PowerShell aggiunge proprietà aggiuntive a questi tipi di oggetto per fornire informazioni aggiuntive. Alcune informazioni sono specifiche della piattaforma. Ad esempio, i valori possibili della proprietà LinkType dipendono dalla piattaforma e dal file system in uso. I filesystem Linux e macOS supportano HardLink e SymLink. Windows NTFS supporta HardLink, SymLink, Junctione diversi altri valori per LinkType.

Quando usi o per informazioni su un elemento collegato, la proprietà Mode contiene un per indicare che l'elemento è un collegamento. La proprietà LinkType contiene il tipo di collegamento.

I collegamenti AppExecLink vengono creati quando si installa un'applicazione da Microsoft Store. Per i collegamenti AppExecLink, Windows non fornisce valori per le proprietà LinkType o LinkTarget.

Get-Item ~\AppData\Local\Microsoft\WindowsApps\winget.exe

    Directory: C:\Users\user1\AppData\Local\Microsoft\WindowsApps

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
la---            6/8/2023 12:20 PM              0 winget.exe ->

Il provider file system espone gli archivi dati mappando qualsiasi unità logiche nel computer come unità di PowerShell. Per lavorare con un'unità del FileSystem , è possibile cambiare il percorso usando il nome dell'unità seguito da un due punti (:).

Set-Location C:

È anche possibile usare il provider di FileSystem da qualsiasi altra unità di PowerShell. Per fare riferimento a un file o a una directory da un'altra posizione, utilizzare il nome dell'unità (C:, D:, ...) nel percorso.

Nota

PowerShell usa gli alias per fornire un modo familiare di lavorare con i percorsi del provider. I comandi come dir e ls sono ora alias per Get-ChildItem, cd è un alias per Set-Location. e pwd è un alias per Get-Location.

Recupero di file e directory

Il cmdlet Get-ChildItem restituisce tutti i file e le directory nel percorso corrente. È possibile specificare un percorso diverso per la ricerca e usare i parametri predefiniti per filtrare e controllare la profondità di ricorsione.

Get-ChildItem

Per altre informazioni sull'utilizzo dei cmdlet, vedere Get-ChildItem.

Copia di file e directory

Il cmdlet Copy-Item copia i file e le directory in un percorso da te specificato. I parametri sono disponibili per filtrare e ripetere, in modo analogo a Get-ChildItem.

Il comando seguente copia tutti i file e le directory nel percorso C:\temp\ nella cartella C:\Windows\Temp.

Copy-Item -Path C:\temp\* -Destination C:\Windows\Temp -Recurse -File

Copy-Item sovrascrive i file nella directory di destinazione senza chiedere conferma.

Questo comando copia il file a.txt dalla directory C:\a alla directory C:\a\bb.

Copy-Item -Path C:\a\a.txt -Destination C:\a\bb\a.txt

Copia tutte le directory e i file nella directory C:\a nella directory C:\c. Se una delle directory da copiare esiste già nella directory di destinazione, il comando non riesce a meno che non si specifichi il parametro Force.

Copy-Item -Path C:\a\* -Destination C:\c -Recurse

Per ulteriori informazioni, consultare Copy-Item.

Spostamento di file e directory

Questo comando sposta il file c.txt nella directory C:\a nella directory C:\a\aa:

Move-Item -Path C:\a\c.txt -Destination C:\a\aa

Per impostazione predefinita, il cmdlet non sovrascrive un file esistente con lo stesso nome. Per forzare il cmdlet a sovrascrivere un file esistente, specificare il parametro Force.

Non è possibile spostare una directory quando questa è la posizione corrente. Quando si usa Move-Item per spostare la directory nel percorso corrente, viene visualizzato questo errore.

C:\temp> Move-Item -Path C:\temp\ -Destination C:\Windows\Temp

Move-Item : Cannot move item because the item at 'C:\temp\' is in use.
At line:1 char:1
+ Move-Item C:\temp\ C:\temp2\
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Move-Item], PSInvalidOperationException
    + FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.MoveItemCommand

Gestione del contenuto dei file

Ottenere il contenuto di un file

Questo comando ottiene il contenuto del file "Test.txt" e li visualizza nella console.

Get-Content -Path Test.txt

È possibile inviare tramite pipe il contenuto del file a un altro cmdlet. Ad esempio, il comando seguente legge il contenuto del file e quindi li fornisce come input al cmdlet ConvertTo-Html :

Get-Content -Path Test.txt | ConvertTo-Html

È anche possibile recuperare il contenuto di un file anteponendo il relativo percorso del provider con il segno di dollaro ($). Il percorso deve essere racchiuso tra parentesi graffe a causa di restrizioni nella denominazione delle variabili. Per ulteriori informazioni, consultare about_Variables.

${C:\Windows\System32\drivers\etc\hosts}

Aggiungere contenuto a un file

Questo comando aggiunge la stringa "test content" al file Test.txt:

Add-Content -Path test.txt -Value "test content"

Il contenuto esistente nel file Test.txt non viene eliminato.

Sostituire il contenuto di un file

Questo comando sostituisce il contenuto del file Test.txt con la stringa "test content":

Set-Content -Path test.txt -Value "test content"

Sovrascrive il contenuto di Test.txt. È possibile usare il parametro valore del cmdlet per aggiungere contenuto a un file al momento della creazione.

Scorrere il contenuto di un file

Per impostazione predefinita, il cmdlet Get-Content usa il carattere di fine riga come delimitatore, quindi ottiene un file come raccolta di stringhe, con ogni riga come una stringa nel file.

È possibile usare il parametro delimitatore per specificare un delimitatore alternativo. Se lo si imposta sui caratteri che indicano la fine di una sezione o l'inizio della sezione successiva, è possibile suddividere il file in parti logiche.

Il primo comando ottiene il file Employees.txt e lo divide in sezioni, ognuna delle quali termina con le parole "End of Employee Record" e la salva nella variabile $e.

Il secondo comando utilizza la notazione degli array per ottenere il primo elemento della raccolta in $e. Usa un indice pari a 0, perché le matrici di PowerShell sono in base zero.

Per ulteriori informazioni sul cmdlet Get-Content, consultare l'argomento della Guida associato a Get-Content.

Per altre informazioni sulle matrici, vedere about_Arrays.

$e = Get-Content C:\test\employees.txt -Delimited "End Of Employee Record"
$e[0]

Gestione dei descrittori di sicurezza

Visualizzare l'ACL per un file

Questo comando restituisce un oggetto System.Security.AccessControl.FileSecurity:

Get-Acl -Path test.txt | Format-List -Property *

Per ulteriori informazioni su questo oggetto, indirizzare il comando al cmdlet Get-Member o consultare la classe FileSecurity.

Creazione di file e directory

Creare una cartella

Questo comando crea la directory logfiles nell'unità C:

New-Item -Path C:\ -Name logfiles -Type Directory

PowerShell include anche una funzione di mkdir (alias md) che usa il cmdlet New-Item per creare una nuova directory.

Creare un file

Questo comando crea il file log2.txt nella directory C:\logfiles e quindi aggiunge la stringa "log di test" al file:

New-Item -Path C:\logfiles -Name log2.txt -Type File

Creare un file con contenuto

Crea un file denominato log2.txt nella directory C:\logfiles e aggiunge la stringa "log di test" al file.

New-Item -Path C:\logfiles -Name log2.txt -Type File -Value "test log"

Ridenominazione di file e directory

Rinominare un file

Questo comando rinomina il file a.txt nella directory C:\a in b.txt:

Rename-Item -Path C:\a\a.txt -NewName b.txt

Rinominare una cartella

Questo comando rinomina la directory C:\a\cc in C:\a\dd:

Rename-Item -Path C:\a\cc -NewName dd

Eliminazione di file e directory

Eliminare un file

Questo comando elimina il file Test.txt nella directory corrente:

Remove-Item -Path test.txt

Eliminare file con caratteri jolly

Questo comando elimina tutti i file nella directory corrente con l'estensione del nome file .xml:

Remove-Item -Path *.xml

Avvio di un programma richiamando un file associato

Richiamare un file

Cmdlet Get-Service per ottenere informazioni sui servizi locali e inviare tramite pipe le informazioni al cmdlet Export-Csv per archiviare le informazioni nel file Services.csv.

Quindi Invoke-Item apre il file services.csv nel programma associato all'estensione .csv:

Get-Service | Export-Csv -Path services.csv
Invoke-Item -Path services.csv

Recupero di file e cartelle con attributi specificati

Ottenere i file di sistema

Questo comando ottiene i file di sistema nella directory corrente e nelle relative sottodirectory.

Usa il parametro File per ottenere solo file (non directory) e il parametro System per ottenere solo gli elementi con l'attributo "system".

Usa il parametro Recurse per ottenere gli elementi nella directory corrente e in tutte le sottodirectory.

Get-ChildItem -File -System -Recurse

Ottieni file nascosti

Questo comando ottiene tutti i file, inclusi i file nascosti, nella directory corrente.

Usa il parametro attributi con due valori, , che ottiene i file nascosti e , che ottiene tutti gli altri file.

Get-ChildItem -Attributes !Directory,!Directory+Hidden

dir -Att !d,!d+h equivale a questo comando.

Ottenere file compressi e crittografati

Questo comando ottiene i file nella directory corrente che sono compressi o crittografati.

Usa il parametro Attribute con due valori, Compressed e Encrypted. I valori sono separati da una virgola , che rappresenta l'operatore "OR".

Get-ChildItem -Attributes Compressed,Encrypted

Parametri dinamici

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

Codifica <>

Specifica la codifica del file. Il valore predefinito è ASCII.

  • ascii: usa la codifica per il set di caratteri ASCII (a 7 bit).
  • bigendianunicode: codifica in formato UTF-16 usando l'ordine dei byte big-endian.
  • bigendianutf32: codifica in formato UTF-32 usando l'ordinamento dei byte big-endian.
  • oem: usa la codifica predefinita per i programmi MS-DOS e console.
  • unicode: codifica in formato UTF-16 usando l'ordine dei byte little-endian.
  • utf7: codifica in formato UTF-7.
  • utf8: codifica in formato UTF-8.
  • utf8BOM: codifica in formato UTF-8 con byte order mark (BOM)
  • utf8NoBOM: codifica in formato UTF-8 senza byte order mark (BOM)
  • utf32: codifica in formato UTF-32.

Cmdlet supportati

  • Add-Content
  • Get-Content
  • Set-Content

delimitatore <stringa>

Specifica il delimitatore utilizzato Get-Content per dividere il file in oggetti durante la lettura.

Il valore predefinito è \n, il carattere di fine riga.

Quando si legge un file di testo, Get-Content restituisce una raccolta di oggetti stringa, ognuno dei quali termina con il carattere delimitatore.

Se si immette un delimitatore che non esiste nel file, Get-Content restituisce l'intero file come singolo oggetto non delimitato.

È possibile usare questo parametro per suddividere un file di grandi dimensioni in file più piccoli specificando un separatore di file, ad esempio "Fine dell'esempio", come delimitatore. Il delimitatore viene mantenuto (non eliminato) e diventa l'ultimo elemento in ogni sezione del file.

Nota

Attualmente, quando il valore del parametro delimitatore è una stringa vuota, non restituisce nulla. Si tratta di un problema noto. Per forzare Get-Content a restituire l'intero file come una singola stringa non delimitata, immettere un valore che non esiste nel file.

Cmdlet supportati

  • Get-Content

Attendere <SwitchParameter>

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

Durante l'attesa, Get-Content controlla il file una volta al secondo finché non viene interrotto, ad esempio premendo CTRL+C.

Cmdlet supportati

  • Get-Content

Attributi <di FlagsExpression>

Ottiene file e cartelle con gli attributi specificati. Questo parametro supporta tutti gli attributi e consente di specificare combinazioni complesse di attributi.

Il parametro Attributes è stato introdotto in Windows PowerShell 3.0.

Il parametro Attributi supporta gli attributi seguenti:

  • archivio
  • compressi
  • dispositivo
  • Cartella
  • crittografato
  • nascosti
  • Normale
  • NotContentIndexed
  • offline
  • Solo lettura
  • Punto di Ri-analisi
  • SparseFile
  • Sistema
  • Temporanei

Per una descrizione di questi attributi, vedere l'enumerazione FileAttributes .

Usare gli operatori seguenti per combinare gli attributi.

  • ! -NON
  • + -E
  • , -O

Non sono consentiti spazi tra un operatore e il relativo attributo. Tuttavia, gli spazi sono consentiti prima delle virgole.

Cmdlet supportati

  • Get-ChildItem

SwitchParameter directory <>

Ottiene le directory (cartelle).

Il parametro directory è stato introdotto in Windows PowerShell 3.0.

Per ottenere solo le directory, usare il parametro Directory e omettere il parametro File. Per escludere le directory, usare il parametro File e omettere il parametro directory oppure usare il parametro Attributi .

Cmdlet supportati

  • Get-ChildItem

Parametro parametro file <>

Ottiene i file.

Il parametro File è stato introdotto in Windows PowerShell 3.0.

Per ottenere solo i file, usare il parametro file e omettere il parametro directory . Per escludere i file, usare il parametro directory di e omettere il parametro file di oppure usare il parametro attributi .

Cmdlet supportati

  • Get-ChildItem

<ParametroInterruttore> nascosto

Ottiene solo file e directory nascosti (cartelle). Per impostazione predefinita, Get-ChildItem ottiene solo elementi non nascosti.

Il parametro Hidden è stato introdotto in Windows PowerShell 3.0.

Per ottenere solo elementi nascosti, usare il parametro Hidden , i relativi alias o oppure il valore nascosto del parametro Attributi . Per escludere gli elementi nascosti, omettere il parametro Nascosti o usare il parametro Attributi.

Cmdlet supportati

  • Get-ChildItem

ReadOnly <SwitchParameter>

Ottiene solo file e cartelle di sola lettura.

Il parametro ReadOnly è stato introdotto in Windows PowerShell 3.0.

Per ottenere solo elementi di sola lettura, usare il parametro ReadOnly, il suo alias ar o il valore ReadOnly del parametro Attributi. Per escludere gli elementi di sola lettura, usare il parametro Attributi.

Cmdlet supportati

  • Get-ChildItem

< switchparameter di sistema >

Ottiene solo file di sistema e directory (cartelle).

Il parametro System è stato introdotto in Windows PowerShell 3.0.

Per ottenere solo file e cartelle di sistema, usare il parametro Sistema, il suo alias as, o il valore Sistema del parametro Attributi. Per escludere file e cartelle di sistema, usare il parametro attributi .

Cmdlet supportati

  • Get-ChildItem

Più recente di <DataOra>

Restituisce $true quando il valore LastWriteTime di un file è maggiore della data specificata. In caso contrario, restituisce $false.

Immettere un oggetto DateTime, ad esempio quello restituito dal cmdlet Get-Date, oppure una stringa che può essere convertita in un oggetto DateTime , ad esempio "August 10, 2011 2:00 PM".

Cmdlet supportati

OlderThan <DateTime>

Restituisce $true quando il valore LastWriteTime di un file è minore della data specificata. In caso contrario, restituisce $false.

Immettere un oggetto DateTime , ad esempio quello restituito dal cmdlet o una stringa che può essere convertita in un oggetto DateTime , ad esempio .

Cmdlet supportati

  • Test-Path

Stream <Stringa>

Gestisce flussi di dati alternativi. Immettere il nome del flusso. I caratteri jolly sono consentiti solo nei comandi Get-Item e Remove-Item in un'unità di sistema.

Cmdlet supportati

  • Add-Content
  • Clear-Content
  • Get-Item
  • Get-Content
  • Remove-Item
  • Set-Content

< SwitchParameter non elaborato >

Ignora i caratteri di nuova riga. Restituisce il contenuto come singolo elemento.

Cmdlet supportati

  • Get-Content

ItemType <String>

Questo parametro consente di specificare il tipo di elemento da creare con New-Item.

I valori disponibili di questo parametro dipendono dal provider corrente in uso.

In un'unità FileSystem sono consentiti i valori seguenti:

  • Documento
  • Directory
  • Collegamento simbolico
  • Giunzione
  • HardLink

Cmdlet supportati

  • New-Item

Uso della pipeline

I cmdlet del provider accettano l'input della pipeline. È possibile usare la pipeline per semplificare l'attività inviando i dati del provider da un cmdlet a un altro cmdlet del provider. Per altre informazioni su come usare la pipeline con i cmdlet del provider, vedere i riferimenti ai cmdlet forniti in questo articolo.

Ottenere assistenza

A partire da Windows PowerShell 3.0, è possibile ottenere argomenti della Guida personalizzati per i cmdlet del provider che illustrano il comportamento di tali cmdlet in un'unità file system.

Per ottenere gli argomenti della Guida personalizzati per l'unità del file system, eseguire un comando Get-Help in un'unità del file system o usare il parametro Path di Get-Help per specificare un'unità del file system.

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c:

Vedere anche