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\SoftwareMyNewCompany 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.

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 durante l'esecuzione di 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 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.

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 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.

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 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.

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 gli effetti dell'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

String

È possibile inviare tramite pipe una stringa contenente un percorso a questo cmdlet.

Output

None

Per impostazione predefinita, questo cmdlet non restituisce alcun output.

PSObject

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.