2015-07-22 3 views
1

Я пытаюсь получить PowerShell для оценки переменных перед выполнением команды, например:оценивающих переменных первый в командах PowerShell

$OutputPath = "C:\Temp" 
Get-ChildItem -include *.mp3 | Move-Item -Destination $OutputPath 

Однако Move-Item командлет пытается интерпретировать это в буквальном смысле, так что Безразлично Не двигайся. Скрипт отлично работает, когда я вхожу в путь напрямую, но мне нужно иметь возможность управлять контуром с помощью переменной. Как мне это сделать?

+4

Какая у вас ошибка? – PetSerAl

+3

Код, который вы опубликовали, должен делать то, что вы ожидаете от него. –

+1

Я также хотел бы знать об ошибке. В коде не должно быть ничего плохого. – briantist

ответ

3

Этот ответ может развиваться, но по мере вашего вопроса я вижу большую проблему, которая, к сожалению, плохо документирована. -Include и -Exclude выполняют свои функции только в том случае, если они связаны с -Recurse. Используемый без него может получить 0 результатов. В вашем случае это означает, что ничто не пропускается через трубу, а Move-Item не выполняется.

В настоящее время вы просто фильтруете на *.mp3, который является основным и может использоваться только с параметром -filter. Хотя вам не нужно, чтобы я рекомендовал указать -Path, чтобы вы перемещали нужные файлы.

Get-ChildItem -Filter *.mp3 | Other-Stuff ... 

Вы упоминали в комментариях следующее сообщение об ошибке:

Move-Item : Cannot create a file when that file already exists. 

Эта ошибка является очень специфичны. Либо от предыдущего тестирования, либо от надзора над новыми именами, которые уже существуют. Две вещи, которые вы можете сделать, чтобы помочь с этой проблемой, - это использовать переключатель -WhatIf, который должен указывать путь к файлу в подробном потоке, чтобы вы знали, где находится файл.

Во-вторых, если вы понимаете риск данных, необходимо использовать -Force, чтобы файл был перезаписан новым. С Copy-Item это не имеет большого значения, поскольку исходный файл все еще существует. Ошибки с Move-Item могут быть постоянными.

+0

Использование 'WhatIf' просто возвращает обычные функции скрипта и находит файлы мультимедиа в порядке. Однако теперь, когда я меняю путь, он просто создает общий файл с именем моей выходной папки вместо фактического перемещения файлов. –

+0

@DreadEurosRot Вы должны показать пример этого кода в своем вопросе и добавить подробные данные, если сможете. Я не могу объяснить, что происходит с вашей установкой, с тем, что у меня есть до сих пор. – Matt

+0

@DreadEurosRot, вы должны создать папку, прежде чем переместить файлы на нее. – PetSerAl

Смежные вопросы