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 sottodirectory e file 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 dell'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 Registro di sistema nella HKLM\Software
MyNewCompany
chiave . Il carattere jolly (*
) indica che il contenuto della MyCompany
chiave deve essere spostato, non il tasto stesso. In questo comando vengono omessi i nomi facoltativi dei parametri Path e Destination .
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 è 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 conferma prima di eseguire il cmdlet.
Tipo: | SwitchParameter |
Alias: | cf |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Credential
Nota
Questo parametro non è supportato da alcun provider installato con PowerShell. Per rappresentare un altro utente o elevare le credenziali durante l'esecuzione di questo cmdlet, usare Invoke-Command.
Tipo: | PSCredential |
Posizione: | Named |
Valore predefinito: | Current user |
Necessario: | False |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | 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 .
Tipo: | String |
Posizione: | 1 |
Valore predefinito: | Current directory |
Necessario: | False |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | 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 modello di percorso, ad esempio *.txt
. I caratteri jolly sono consentiti. Il parametro Exclude è effettivo 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.
Tipo: | String[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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 modello di percorso, ad esempio *.txt
. I caratteri jolly sono consentiti. Il parametro Include è effettivo 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.
Tipo: | String[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | True |
-LiteralPath
Specifica un percorso di una o più posizioni. Il valore di LiteralPath viene usato esattamente come viene tipizzato. 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.
Tipo: | String[] |
Alias: | PSPath, LP |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-PassThru
Restituisce un oggetto che rappresenta l'elemento spostato. Per impostazione predefinita, il cmdlet non genera alcun output.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Path
Specifica il percorso della posizione corrente degli elementi. Il valore predefinito è la directory corrente. I caratteri jolly sono consentiti.
Tipo: | String[] |
Posizione: | 0 |
Valore predefinito: | Current directory |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | True |
-WhatIf
Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.
Tipo: | SwitchParameter |
Alias: | wi |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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 vengono ricorsivi per impostazione predefinita.Questo cmdlet è progettato per lavorare con i dati esposti da qualsiasi provider. Per elencare i provider disponibili nella sessione, digitare
Get-PSProvider
. Per altre informazioni, vedere about_Providers.