Передача пути в переменную в Get-ChildItem - PullRequest
0 голосов
/ 05 мая 2018

Когда я использую * в строке, тогда Get-ChildItem возвращает значение.

$Files = Get-ChildItem "C:\PROD\Logs\exec_package_OrderAnalytics_EXTR.dtsx*"

Но когда я сохраняю путь в переменной, включающей *, тогда появляется ошибка:

$PackageName = "OrderAnalytics_EXTR.dtsx"
$PackagePath = "\\pdw01rasci001\SSISPackages\PROD\Logs\exec_package_$($PackageName)*"
$Files = Get-ChildItem "$PackagePath"

Сообщение об ошибке:

Get-ChildItem : Illegal characters in path.
At line:25 char:10
+ $Files = Get-ChildItem $PackagePath | Sort-Object -Property CreationT ...`

Итак, как мне использовать *, а также имя переменной в Get-ChildItem, чтобы получить результат?

1 Ответ

0 голосов
/ 06 мая 2018

Ваша логика и синтаксис скрипта работает нормально, проблема с вашим кодом, скорее всего, связана с указанным вами путем. немного отладки $PackagePath должно помочь.

Попробуйте следующий скрипт:

1. Который создаст каталог в "C: \ Stackoverflow \ Scripts"

2. Создает 3 текстовых файла в каталоге

3. Сохраняет путь в переменной, включая * согласно вашему требованию

New-Item -ItemType Directory -Path "C:\Stackoverflow\Scripts" -Force
New-Item -ItemType File -Path "C:\Stackoverflow\Scripts\Untitled1.txt", "C:\Stackoverflow\Scripts\Untitled2.txt", "C:\Stackoverflow\Scripts\Untitled3.txt"


$FileName = "led"
$FilePath = "C:\Stackoverflow\Scripts\\Untit${FileName}*"
$Files = Get-ChildItem -Name "$FilePath"
echo "$Files"

Быстрый указатель

Чтобы помочь отладить путь, попробуйте Get-ChildItem -LiteralPath и выведите результат, Literal Path принимает путь в том виде, в каком он есть, и обязательно не включайте подстановочные знаки

$Files = Get-ChildItem -Name -LiteralPath "\\pdw01rasci001\SSISPackages\PROD\Logs\exec_package_OrderAnalytics_EXTR.dtsx"
echo "$Files"
...