почему каталог перенаправляется в C: \? - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть следующий скрипт для удаленного удаления папок / файлов

$Directory = "E:\Data"
Invoke-Command -Computer $Server -ScriptBlock { 
    param ($dir, $name)

$f = Get-ChildItem -Path $dir | Where {$_.Name -Match "$name"}
If ($f) {
    $f | Foreach {
        Remove-Item $_ -confirm:$false -Recurse -Verbose 
    }
}
else {
    Write-Verbose "No file found"
}
} -ArgumentList $Directory, $DB

по какой-то причине, вместо этого он пытается искать файлы в C:\users\documents ... хотя я четко определил параметр каталога вE:\Data

Не удается найти путь 'C: \ Users \ Documents \ file.3.db', так как он не существует.

, поэтому file.3.db фактически существуетна E:\Data ... все же каким-то образом объединяется это с каталогом C:\ ..., в котором файл не существует, и выводится это сообщение об ошибке.я запутался, как это происходит

РЕДАКТИРОВАТЬ: приведенный ниже код работает просто отлично, но я обновил его до этого выше, потому что я хотел, чтобы проверка файлов ... хотя теперь это сделало код больше не работает:

Invoke-Command -Computer $Server -ScriptBlock { 
    param ($dir, $name)
    Get-ChildItem -Path $dir | 
        Where {$_.Name -Match "$name"} | 
            Remove-Item -confirm:$false -Recurse -Verbose 
} -ArgumentList $Directory, $DB

1 Ответ

2 голосов
/ 04 апреля 2019

Вы можете отладить все это локально и увидеть проблему.В основном вам нужно также выбрать FullName с помощью -ExpandProperty.

$Directory = "d:\temp"
Invoke-Command -Computer $Server -ScriptBlock { 
    param ($dir, $name)

    Write-Output "dir='$dir', name='$name'"

    $f = Get-ChildItem -Path $dir | Where {$_.Name -Match $name} | Select -ExpandProperty FullName
    if ($f) {
        $f | Foreach {
            Remove-Item $_ -confirm:$false -Verbose -WhatIf
        }
    }
    else {
        Write-Verbose "No file found"
    }
} -ArgumentList $Directory, "test*"

ПРИМЕЧАНИЕ. Я добавил -WhatIf к вызову Remove-Item для тестирования, чтобы не удалять данные на моем компьютере.,Я также удалил -Recurse, поскольку это не имеет смысла для меня ... но вы, конечно, можете добавить его обратно в мой тестовый код.

Исходя из этого, я думаю, что вы можете получить свое окончательное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...