对于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-ChildItemhttps://stackoverflow.com/questions/64867400
复制相似问题