У меня есть сценарий (вставлен ниже), который должен делать следующее:
Он выполняет шаги №1 и №2, но этап №3, Move-Item не перемещает файлы, и я не знаю почему, и я не получаю никаких указаний на ошибку.
Может кто поможет? Спасибо
$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"
}
}
}
Во-первых, похоже, что вы перемещаете файлы в тот же каталог, из которого они начали ... из $ source_move в $ source_move. Я думаю, вы хотите, чтобы это выглядело так:
Move-Item $source + $sourcefile $source_move
Также попробуйте поставить + между $ source_move и $ sourcefile.
Это как раз ваша проблема. Вы не можете так связать переменные вместе. ПоШ запутался.
Попробуй это:
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!
И вы пытались переместиться в ту же папку (источник = место назначения). Это всегда нет.