У меня есть простой скрипт, который ходит по дереву каталогов.
function GetSubFolders([IO.DirectoryInfo]$folder) {
Write-Host "Getting folder $folder"
Get-ChildItem $folder | ? { $_.PSIsContainer } | % { GetSubFolders $_ }
}
Если я вызову GetSubFolders "c:\temp"
, произойдет сбой для каждого подкаталога, найденного в c:\temp:
Get-ChildItem: не удается найти путь 'C:\WINDOWS\system32\somefolder
Где «somefolder» — это подкаталог c:\temp. Переменная $_
явно является объектом System.IO.DirectoryInfo
, но почему она лишена своего абсолютного пути и внезапно сделана относительно текущего каталога, c:\windows\system32? Обратите внимание, что при входе в этот метод он правильно выводит
Получение папки c:\temp
Это означает, что он работает один раз, поэтому не может быть проблем с Get-ChildItem
, принимающим объект DirectoryInfo
в качестве параметра.
-Name
свойствуGet-ChildItem.
[ухмылка] взгляните на этот[io.directoryinfo]'C:\temp' | Select-Object -Property *
и затем сравните его со списком из этого(Get-Help Get-ChildItem -Parameter *).Name
. обратите внимание на отсутствие имени свойства-Path
или -LiteralPath` в 1-м объекте. - person Lee_Dailey   schedule 18.01.2019