Move-Item
Sposta un elemento da una posizione a un'altra.
Sintassi
Move-Item
[-Path] <String[]>
[[-Destination] <String>]
[-Force]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PassThru]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Move-Item
-LiteralPath <String[]>
[[-Destination] <String>]
[-Force]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PassThru]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Descrizione
Il Move-Item
cmdlet sposta un elemento, incluse le proprietà, il contenuto e gli elementi figlio, da una posizione a un'altra. Le posizioni devono essere supportate dallo stesso provider.
Ad esempio, può spostare un file o una sottodirectory da una directory a un'altra oppure spostare una sottochiave del Registro di sistema da una chiave a un'altra. Gli elementi spostati vengono aggiunti nella nuova posizione ed eliminati da quella originale.
Esempio
Esempio 1: Spostare un file in un'altra directory e rinominarlo
Questo comando sposta il Test.txt
file dall'unità C:
alla E:\Temp
directory e lo rinomina da test.txt
a tst.txt
.
Move-Item -Path C:\test.txt -Destination E:\Temp\tst.txt
Esempio 2: Spostare una directory e il relativo contenuto in un'altra directory
Questo comando sposta la C:\Temp
directory e il relativo contenuto nella C:\Logs
directory.
La Temp
directory e tutti i relativi file e sottodirectory vengono quindi visualizzati nella Logs
directory.
Move-Item -Path C:\Temp -Destination C:\Logs
Esempio 3: Spostare tutti i file di un'estensione specificata dalla directory corrente a un'altra directory
Questo comando sposta tutti i file di testo (*.txt
) nella directory corrente (rappresentati da un punto (.
)) nella C:\Logs
directory .
Move-Item -Path .\*.txt -Destination C:\Logs
Esempio 4: Spostare in modo ricorsivo tutti i file di un'estensione specificata dalla directory corrente a un'altra directory
Questo comando sposta tutti i file di testo dalla directory corrente e tutte le sottodirectory, in modo ricorsivo, alla C:\TextFiles
directory .
Get-ChildItem -Path ".\*.txt" -Recurse | Move-Item -Destination "C:\TextFiles"
Il comando usa il Get-ChildItem
cmdlet per ottenere tutti gli elementi figlio nella directory corrente (rappresentata dal punto (.
)) e dalle relative sottodirectory con estensione di *.txt
file. Usa il parametro Recurse per rendere ricorsivo il recupero e il parametro Include per limitare il recupero ai *.txt
file.
L'operatore pipeline (|
) invia i risultati di questo comando a Move-Item
, che sposta i file di testo nella TextFiles
directory .
Se i file da spostare hanno C:\Textfiles
lo stesso nome, Move-Item
visualizza un errore e continua, ma sposta un solo file con ogni nome in C:\Textfiles
. Gli altri file rimangono nelle directory originali.
Se la Textfiles
directory (o qualsiasi altro elemento del percorso di destinazione) non esiste, il comando ha esito negativo. La directory mancante non viene creata automaticamente, anche se si usa il parametro Force . Move-Item
sposta il primo elemento in un file denominato Textfiles
e quindi visualizza un errore che spiega che il file esiste già.
Inoltre, per impostazione predefinita, Get-ChildItem
non sposta i file nascosti. Per spostare i file nascosti, usare il parametro Force con Get-ChildItem
.
Nota
In Windows PowerShell 2.0, quando si usa il parametro Recurse del Get-ChildItem
cmdlet, il valore del parametro Path deve essere un contenitore. Usare il parametro Include per specificare il filtro di estensione del *.txt
nome file (Get-ChildItem -Path .\* -Include *.txt -Recurse | Move-Item -Destination C:\TextFiles
).
Esempio 5: Spostare chiavi e valori del Registro di sistema in un'altra chiave
Questo comando sposta le chiavi e i valori del Registro di sistema all'interno della MyCompany
chiave del MyNewCompany
Registro di sistema nella HKLM\Software
chiave . Il carattere jolly (*
) indica che il contenuto della MyCompany
chiave deve essere spostato, non la chiave stessa. In questo comando i nomi facoltativi dei parametri Path e Destination vengono omessi.
Move-Item "HKLM:\software\mycompany\*" "HKLM:\software\mynewcompany"
Esempio 6: Spostare una directory e il relativo contenuto in una sottodirectory della directory specificata
Questo comando sposta la Logs[Sept`06]
directory (e il relativo contenuto) nella Logs[2006]
directory .
Move-Item -LiteralPath 'Logs[Sept`06]' -Destination 'Logs[2006]'
Il parametro LiteralPath viene usato invece di Path, perché il nome della directory originale include parentesi quadre e parentesi quadre destra ([
e ]
). Il percorso è anche racchiuso tra virgolette singole ('
), in modo che il simbolo di backtick (`
) non venga interpretato erroneamente.
Il parametro Destination deve anche essere racchiuso tra virgolette singole perché include parentesi quadre che possono essere interpretate in modo non corretto.
Parametri
-Confirm
Richiede la conferma dell'utente prima di eseguire il cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Nota
Questo parametro non è supportato da alcun provider installato con PowerShell. Per rappresentare un altro utente o elevare le credenziali quando si esegue questo cmdlet, usare Invoke-Command.
Type: | PSCredential |
Position: | Named |
Default value: | Current user |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Destination
Specifica il percorso in cui spostare gli elementi. Il valore predefinito è la directory corrente. I caratteri jolly non sono consentiti.
Per rinominare l'elemento da spostare, specificare un nuovo nome nel valore del parametro Destination .
Type: | String |
Position: | 1 |
Default value: | Current directory |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-Exclude
Specifica, come matrice di stringhe, un elemento o elementi esclusi dal cmdlet nell'operazione. Il valore di questo parametro qualifica il parametro Path. Immettere un elemento o un criterio di percorso, ad esempio *.txt
. I caratteri jolly sono consentiti. Il parametro Exclude è valido solo quando il comando include il contenuto di un elemento, ad esempio C:\Windows\*
, dove il carattere jolly specifica il contenuto della C:\Windows
directory.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Filter
Specifica un filtro per qualificare il parametro Path . Il provider FileSystem è l'unico provider di PowerShell installato che supporta l'uso dei filtri. È possibile trovare la sintassi per il linguaggio di filtro FileSystem in about_Wildcards. I filtri sono più efficienti rispetto ad altri parametri, perché il provider li applica quando il cmdlet ottiene gli oggetti anziché filtrare gli oggetti dopo il recupero.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Force
Forza l'esecuzione del comando senza chiedere conferma all'utente. L'implementazione varia a seconda del provider. Per altre informazioni, vedere about_Providers.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Include
Specifica, come matrice di stringhe, un elemento o elementi inclusi nel cmdlet nell'operazione. Il valore di questo parametro qualifica il parametro Path. Immettere un elemento o un criterio di percorso, ad esempio *.txt
. I caratteri jolly sono consentiti. Il parametro Include è valido solo quando il comando include il contenuto di un elemento, ad esempio C:\Windows\*
, dove il carattere jolly specifica il contenuto della C:\Windows
directory.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-LiteralPath
Specifica un percorso di una o più posizioni. Il valore di LiteralPath viene usato esattamente come viene digitato. Nessun carattere viene interpretato come carattere jolly. Se il percorso include caratteri di escape, racchiuderlo tra virgolette singole ('
). Le virgolette singole indicano a PowerShell di non interpretare alcun carattere come sequenze di escape.
Per altre informazioni, vedere about_Quoting_Rules.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-PassThru
Restituisce un oggetto che rappresenta l'elemento spostato. Per impostazione predefinita, il cmdlet non genera alcun output.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Specifica il percorso della posizione corrente degli elementi. Il valore predefinito è la directory corrente. I caratteri jolly sono consentiti.
Type: | String[] |
Position: | 0 |
Default value: | Current directory |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-WhatIf
Mostra l'esito in caso di esecuzione del cmdlet. Il cmdlet non viene eseguito.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
È possibile inviare tramite pipe una stringa contenente un percorso a questo cmdlet.
Output
None
Per impostazione predefinita, questo cmdlet non restituisce alcun output.
Quando si usa il parametro PassThru , questo cmdlet restituisce un oggetto che rappresenta l'elemento spostato.
Note
PowerShell include gli alias seguenti per Move-Item
:
Tutte le piattaforme:
mi
move
Windows:
mv
Questo cmdlet sposta i file tra unità supportate dallo stesso provider, ma sposta le directory solo all'interno della stessa unità.
Poiché un
Move-Item
comando sposta le proprietà, il contenuto e gli elementi figlio di un elemento, tutti gli spostamenti sono ricorsivi per impostazione predefinita.Questo cmdlet è progettato per usare i dati esposti da qualsiasi provider. Per elencare i provider disponibili nella sessione, digitare
Get-PSProvider
. Per altre informazioni, vedere about_Providers.