about_FileSystem_Provider

Nome provider

FileSystem

Unità

C:, D:, Temp: ...

Funzionalità

Filter, ShouldProcess

Descrizione breve

Fornisce l'accesso a file e directory.

Descrizione dettagliata

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

Le unità FileSystem sono uno spazio dei nomi gerarchico contenente le directory e i file nel 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, viene eseguito il mapping di un'unità denominata TEMP: al percorso temporaneo della directory dell'utente. PowerShell usa il metodo .NET GetTempPath() per determinare il percorso della cartella temporanea. In Windows, il percorso è uguale $env:TEMPa . Nei sistemi non Windows, il percorso è uguale $env:TMPDIR a 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 file system Linux e macOS supportano HardLink e SymLink. Windows NTFS supporta HardLink, SymLink, Junctione diversi altri valori per LinkType.

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

AppExecLink i collegamenti vengono creati quando si installa un'applicazione da Microsoft Store. Per AppExecLink i collegamenti, 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 FileSystem espone gli archivi dati eseguendo il mapping di tutte le unità logiche nel computer come unità di PowerShell. Per usare un'unità FileSystem , è possibile modificare la posizione in un'unità usando il nome dell'unità seguito da due punti (:).

Set-Location C:

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

Nota

PowerShell usa gli alias per consentire un modo familiare per usare 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 Get-ChildItem cmdlet 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 Copy-Item cmdlet copia file e directory in un percorso specificato. I parametri sono disponibili per filtrare e ripetere, in modo simile a Get-ChildItem.

Il comando seguente copia tutti i file e le directory nel percorso C:\temp\ della 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 a.txt file dalla C:\a directory alla C:\a\bb directory.

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

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

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

Per altre informazioni, vedere Copy-Item.

Spostamento di file e directory

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

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 la sovrascrittura di un file esistente, specificare il parametro Force .

Non è possibile spostare una directory quando la directory è la posizione corrente. Quando si usa Move-Item per spostare la directory nella posizione 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 il contenuto del file tramite pipe a un altro cmdlet. Ad esempio, il comando seguente legge il contenuto del Test.txt file e quindi li fornisce come input per il 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 di denominazione delle variabili. Per altre informazioni, vedere about_Variables.

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

Aggiungere contenuto a un file

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

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

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

Sostituire il contenuto di un file

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

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

Sovrascrive il contenuto di Test.txt. È possibile usare il parametro Value del New-Item cmdlet per aggiungere contenuto a un file quando viene creato.

Scorrere il contenuto di un file

Per impostazione predefinita, il Get-Content cmdlet 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 Delimiter per specificare un delimitatore alternativo. Se lo si imposta sui caratteri che denotano la fine di una sezione o l'inizio di quella successiva, è possibile dividere il file in parti logiche.

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

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

Per altre informazioni sul Get-Content cmdlet, vedere l'argomento della Guida per .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 altre informazioni su questo oggetto, inviare tramite pipe il comando al cmdlet Get-Member o vedere la classe FileSecurity .

Creazione di file e directory

Creare una directory

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

New-Item -Path c:\ -Name logfiles -Type directory

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

Creare un file

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

New-Item -Path c:\logfiles -Name log2.txt -Type file

Creare un file con contenuto

Crea un file denominato log2.txt nella C:\logfiles directory e aggiunge la stringa "test log" 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 a.txt file nella C:\a directory in b.txt:

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

Rinominare una directory

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

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

Eliminazione di file e directory

Eliminare un file

Questo comando elimina il Test.txt file 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 .xml del nome file:

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 Services.csv file.

Invoke-Item apre quindi il services.csv file 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

Ottenere file nascosti

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

Usa il parametro Attributes con due valori, !Directory+Hidden, che ottiene i file nascosti e !Directory, che ottiene tutti gli altri file.

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

dir -att !d,!d+h è l'equivalente di questo comando.

Ottenere file compressi e crittografati

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

Usa il parametro Attributes con due valori e CompressedEncrypted. 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 dei file. L'impostazione predefinita è 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'ordine 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

Stringa delimitatore <>

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.

L'immissione di un delimitatore che non esiste nel file restituisce Get-Content l'intero file come singolo oggetto non delimitato.

È possibile usare questo parametro per dividere un file di grandi dimensioni in file più piccoli specificando un separatore di file, ad esempio "Fine 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 Delimiter è una stringa vuota, Get-Content non restituisce nulla. Questo è un problema noto Per forzare Get-Content la restituzione dell'intero file come singola stringa non recapitata, immettere un valore che non esiste nel file.

Cmdlet supportati

  • Get-Content

Wait <SwitchParameter>

Attende che venga aggiunto contenuto al file. In caso affermativo, 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 fino a quando non lo interrompi, ad esempio premendo CTRL+C.

Cmdlet supportati

  • Get-Content

Attributi <FlagsExpression>

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

Il parametro Attributes è stato introdotto in Windows PowerShell 3.0.

Il parametro Attributes supporta gli attributi seguenti:

  • Archiviazione
  • Compressed
  • Dispositivo
  • Directory
  • Crittografata
  • Hidden
  • Normal
  • NotContentIndexed
  • Offline
  • ReadOnly
  • ReparsePoint
  • SparseFile
  • Di sistema
  • Temporanea

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

Per combinare gli attributi, usare gli operatori seguenti.

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

Tra un operatore e il relativo attributo non sono consentiti spazi. Sono invece 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 Attributes .

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 e omettere il parametro File oppure usare il parametro Attributes.

Cmdlet supportati

  • Get-ChildItem

SwitchParameter 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 gli elementi nascosti, usare il parametro Hidden, i relativi h alias o ah il valore Hidden del parametro Attributes. Per escludere gli elementi nascosti, omettere il parametro Hidden o usare il parametro Attributes .

Cmdlet supportati

  • Get-ChildItem

ReadOnly <SwitchParameter>

Ottiene solo i file e le directory (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 relativo ar alias o il valore ReadOnly del parametro Attributes . Per escludere gli elementi di sola lettura, usare il parametro Attributes .

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 System, il relativo as alias o il valore System del parametro Attributes. Per escludere file di sistema e cartelle, usare il parametro Attributes .

Cmdlet supportati

  • Get-ChildItem

NewerThan <DateTime>

Restituisce $True quando il LastWriteTime valore di un file è maggiore della data specificata. In caso contrario, viene restituito $False.

Immettere un oggetto DateTime , ad esempio quello restituito dal cmdlet Get-Date o 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 LastWriteTime valore di un file è minore della data specificata. In caso contrario, viene restituito $False.

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

Cmdlet supportati

  • Test-Path

Stringa di flusso <>

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

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:

  • file
  • Directory
  • SimbolicoLink
  • 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.

Visualizzazione delle informazioni della Guida

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

Per ottenere gli argomenti della Guida personalizzati per l'unità del file system, eseguire un comando Get-Help in un'unità 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:

Vedi anche