Powershell возвращает массив при создании каталога

У меня есть простая функция Powershell, которая возвращает путь к заданному каталогу и при необходимости создает этот каталог. Если путь уже существует, функция возвращает строку. Если функция должна создать каталог, она возвращает массив.

function Get-MyDir()
{
    $dir= "C:\Temp\MyTest"
    if (!(Test-Path $dir))
    {
        New-Item -ItemType directory -Path $dir
    }
    return $dir
}
$mydir = Get-MyDir
$filename = "test.txt"
$file = Join-Path $mydir $filename
Write-Host $file

Если каталог существует, этот код печатает C: \ Temp \ MyTest \ test.txt. Если каталог не существует и функция его создает, код выводит C: \ Temp \ MyTest \ test.txt C: \ Temp \ MyTest \ test.txt

Есть ли способ всегда возвращать одну строку?


person Gregory Khrapunovich    schedule 30.04.2021    source источник
comment
Прочтите, как конвейер PowerShell работает в отношении возврата значений из функций. Причина, по которой вы получаете другое поведение, заключается в том, что New-Item записывает в конвейер. Вы можете перенаправить New-Item на out-null, если хотите подавить такое поведение.   -  person Daniel Mann    schedule 30.04.2021