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:TEMP
a . 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.
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Invoke-Item
- Move-Item
- New-Item
- Remove-Item
- Get-ItemProperty
- Set-ItemProperty
- Clear-Item
- Clear-ItemProperty
- Remove-Item
- Remove-ItemProperty
- Get-Acl
- Set-Acl
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
- Add-Content
- Clear-Content
- Get-Content
- Set-Content
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
, Junction
e 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 ->
Esplorazione delle unità FileSystem
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 Compressed
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 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: