2017-05-30 7 views
1

Ich habe dieses SkriptKopie nicht korrekt Quellordner

$folder = Get-ChildItem -Path \\exp-01\Uploads | 
      Sort-Object LastWriteTime -Descending | 
      Select-Object -Last 1 

Der Ordner Variable Aufnehmen richtig eingerichtet ist, wenn ich es überprüfen, es kommt als

 
    Directory: \\exp-01\Uploads 


Mode    LastWriteTime  Length Name 
----    -------------  ------ ---- 
d----  29/05/2017  08:17   149604223125762 

Aber wenn ich dies tun

copy $folder E:\InvoiceUploads\files\ -Recurse 

ich eine Fehlermeldung erhalten,

Kopie: Pfad 'C: \ Users \ web.developer.03 \ 149604223125762' konnte nicht gefunden werden, weil es nicht existiert.

Die Powershell ausgeführt wird den Ordner (die Eingabeaufforderung):

 
C:\Users\web.developer.03> 

Also, im Grunde ist es nicht richtig Quelle Aufnehmen, sondern es wird das aktuelle Verzeichnis als Quelle aufzunehmen. Was mache ich hier falsch?

Antwort

2

$folder enthält ein DirectoryInfo Objekt, keinen Pfad. Standardmäßig erweitert PowerShell die Name-Eigenschaft dieser Objekte, sodass Copy-Item nach dem Ordnernamen im aktuellen Arbeitsverzeichnis sucht.

Entweder die FullName Eigenschaft erweitern, wenn Sie den Ordner auswählen:

$folder = Get-ChildItem -Path \\exp-01\Uploads | 
      Sort-Object LastWriteTime -Descending | 
      Select-Object -Last 1 -Expand FullName 

oder verwenden Sie die FullName Eigenschaft in der Copy-Item Aussage:

copy $folder.FullName E:\InvoiceUploads\files\ -Recurse 
-1

Scheint wie Sie die MS CMD-Syntax verwenden. (Beachten Sie, dass Sie Kopieren - nicht kopieren - verwenden)

Haben Sie versucht, das Powershells-Cmdlet zum Kopieren zusammen mit benannten Parametern für Quelle und Ziel zu verwenden? Vielleicht hilft es dir.

SYNTAX 
    Copy-Item [-Path] <String[]> [[-Destination] <String>] [-Container] [-Credential <PSCredential>] [-Exclude <String[ 
    ]>] [-Filter <String>] [-Force] [-Include <String[]>] [-PassThru] [-Recurse] [-Confirm] [-WhatIf] [-UseTransaction 
    [<SwitchParameter>]] [<CommonParameters>] 

    Copy-Item [[-Destination] <String>] [-Container] [-Credential <PSCredential>] [-Exclude <String[]>] [-Filter <Strin 
    g>] [-Force] [-Include <String[]>] [-PassThru] [-Recurse] -LiteralPath <String[]> [-Confirm] [-WhatIf] [-UseTransac 
    tion [<SwitchParameter>]] [<CommonParameters>] 
+1

'copy' ist ein Alias ​​für' Copy-Item'. Seine Syntax ist vollkommen korrekt. Das Problem besteht darin, wie PowerShell den Wert von $ Ordner verarbeitet. –

Verwandte Themen