PowerShell v1 Move-Item não Movendo itens

2

Eu tenho um script (colado abaixo) que deveria fazer o seguinte:

  1. Faz loops e pega todos os arquivos que correspondem a um padrão definido
  2. copia esses arquivos para outro local
  3. Mover o arquivo de origem original para outro local (se a cópia tiver sido bem-sucedida)

Ele está fazendo as etapas 1 e 2, mas a etapa 3, o Move-Item não está movendo nenhum arquivo e eu não sei por que e não recebo nenhuma indicação de erro

Alguém pode ajudar? Obrigado

$source = "C:\Users\Tom\"
$source_move = "C:\Users\Tom\OldLogBackup1\"
$destination ="C:\Users\Tom\Mirror\"

if(-not(Test-Path $destination)){mkdir $destination | out-null}

#Step 1
ForEach ($sourcefile In $(Get-ChildItem $source | Where-Object { $_.Name -match "Daily_Reviews\[\d\d\d\d-\d\d\d\d\].journal" }))
{
    #escape filename because there are brackets in the name!
$src = [Management.Automation.WildcardPattern]::Escape($sourcefile)

    #Step 2
    Copy-Item  $src $destination

### Check for a successful file copy
if($?)
{


    if(-not(Test-Path $source_move)){
        echo "Path does not exist!"
    } else { 
        echo "Path exists!"

        ### Step 3
                    ### Move original source file someplace else
        Move-Item $source_move$sourcefile $source_move
        if($?)
        {
            echo "Source file successfully moved"

        } else {

            echo "Source file was not successfully moved"

    }
  }
}
    
por Slinky 10.04.2013 / 19:59

2 respostas

3

Primeiro, parece que você está movendo os arquivos para o mesmo diretório de onde eles começaram ... do $ source_move para o $ source_move. Eu acho que você quer que seja assim:

Move-Item $source + $sourcefile $source_move

Além disso, tente colocar um + entre $ source_move e $ sourcefile.

    
por 10.04.2013 / 20:28
0

Este é exatamente o seu problema. Você não pode encadear variáveis juntas assim. PoSh fica confuso.

Tente isto:

PS C:\> $a = "Powershell"
PS C:\> $b = " Rocks!"
PS C:\> $a
Powershell
PS C:\> $b
 Rocks!
PS C:\> $a$b
At line:1 char:3
+ $a$b
+   ~~
Unexpected token '$b' in expression or statement.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnexpectedToken

PS C:\> $a+$b
Powershell Rocks!
PS C:\> "$a$b"
Powershell Rocks!

AND você estava tentando mover para a mesma pasta (source = destination). Isso é sempre um não não.

    
por 11.04.2013 / 14:27