对于Powershell和脚本/编程非常陌生,我遇到了一个非常基本的问题。
如果我有这样的结构:
Set-Location $PSScriptRoot
然后执行以下操作,我将得到Logfiles文件夹中的文件夹:
$folders = Get-ChildItem -Directory -Path .\Logfiles -Recurse
如果然后执行以下操作,我可以在"Logfiles“中看到第一个子文件夹
$folders[0]
但现在,如果我这样做,它似乎使用“脚本”文件夹而不是"Logfiles“作为根文件夹:
Get-ChildItem $folders[0]
或
Get-ChildItem .\Logfiles\$folders[0]
.(给出一个空结果)
是否有人知道powershell命令中目录是如何工作的?我猜我在处理命令时犯了一个非常基本的错误!!
发布于 2020-11-17 00:01:45
PowerShell接受$folders[0]
(解析为[DirectoryInfo]
对象),并尝试将其转换为可以绑定到Get-ChildItem
的-Path
参数的字符串。
但是,将目录对象转换为字符串只会导致它的名称,有关其位置的信息将在进程中丢失。
相反,您需要这样做:
$folders[0] |Get-ChildItem
..。这将导致PowerShell正确绑定目录对象的完整路径,或者可以将完整路径作为参数传递给-Path
。
Get-ChildItem $folders[0].FullName
发布于 2020-11-16 23:59:07
试一试
Get-ChildItem ".\Logfiles\$($folders[0].Name)"
或
Get-ChildItem $folders[0].FullName
或者我最喜欢的
$folders[0] | Get-ChildItem
https://stackoverflow.com/questions/64867400
复制相似问题