about_FileSystem_Provider
Nome provider
FileSystem
Unità
C:
, D:
, Temp:
...
Funzionalità
Filtro, ShouldProcess
Breve descrizione
Fornisce l'accesso a file e directory.
Descrizione dettagliata
Il provider di FileSystem di PowerShell consente di ottenere, aggiungere, modificare, cancellare ed eliminare file ed 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, un'unità chiamata TEMP:
viene mappata al percorso temporaneo della directory dell'utente. PowerShell usa il metodo .NET GetTempPath() per determinare il percorso della cartella temporanea. In Windows la posizione è uguale $env:TEMP
a . Nei sistemi non Windows, la posizione è uguale $env:TMPDIR
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 .
PowerShell Extended Type System aggiunge proprietà aggiuntive a questi tipi di oggetti 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 si usa 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 ->
Spostamento delle unità FileSystem
Il provider FileSystem espone i relativi 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 a 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 cercare e usare 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 i file e le directory in un percorso specificato.
I parametri sono disponibili per filtrare e ricreare, 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 richiedere 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 non riesce a meno che non si specifica 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 il cmdlet per sovrascrivere un file esistente, specificare il parametro Force .
Non è possibile spostare una directory quando tale 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 del 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 al cmdlet ConvertTo-Html :
Get-Content -Path Test.txt | ConvertTo-Html
È anche possibile recuperare il contenuto di un file prefissendo il relativo percorso del provider con il segno 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 "contenuto di test" 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 "contenuto di test":
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 lo si crea.
Eseguire il ciclo attraverso il contenuto di un file
Per impostazione predefinita, il Get-Content
cmdlet usa il carattere end-of-line 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 nell'insieme in $e
. Usa un indice pari a 0, perché le matrici di PowerShell sono basate su 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'elenco di controllo di accesso 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 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 "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 C:\logfiles
directory 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
Rinomina 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 i file usando caratteri jolly
Questo comando elimina tutti i file nella directory corrente che hanno l'estensione .xml
del nome file:
Remove-Item -Path *.xml
Avvio di un programma richiamando un file associato
Richiamare un file
Il cmdlet Get-Service per ottenere informazioni sui servizi locali e pipe le informazioni sul cmdlet Export-Csv per archiviare le informazioni nel Services.csv
file.
Quindi Invoke-Item apre 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 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 Attributi con due valori, , !Directory+Hidden
che ottiene 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 Attributi 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 di cmdlet aggiunti da un provider di PowerShell e sono disponibili solo quando il cmdlet viene usato nell'unità abilitata per il provider.
Codifica di 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 di byte big-endian.bigendianutf32
: codifica in formato UTF-32 usando l'ordine di byte big-endian.oem
: usa la codifica predefinita per i programmi MS-DOS e console.unicode
: codifica in formato UTF-16 usando l'ordine di 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 che Get-Content
usa per dividere il file in oggetti mentre legge.
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 preservato (non rimosso) e diventa l'ultimo elemento di 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 annullata, 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.
Quando si attende, Get-Content
controlla il file una volta al secondo fino a interromperlo, ad esempio premendo CTRL+C.
Cmdlet supportati
Get-Content
Flag attributiExpression <>
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
- 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
Parametro parametro 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
SwitchParameter del 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 i file e le directory (cartelle) nascosti. 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 h
alias o ah
o 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 i file e le directory (cartelle) di sistema.
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 e cartelle di sistema, 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 Stream>
Gestisce flussi di dati alternativi. Immettere il nome del flusso. I caratteri jolly sono consentiti solo in Get-Item
per i comandi e Remove-Item
in un'unità del 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
- 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.
Risorse 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à 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: