- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 powershell 中,ls -R *.txt
将按目录递归地列出文件,或者,甚至更好:
PS> Get-ChildItem -Path C:\Test -Name
日志
anotherfile.txt
Command.txt
CreateTestFile.ps1
ReadOnlyFile.txt
但是我如何将它输入到数组中呢?我想要一个文件(?)对象本身的数组,查看:
Get-ChildItem "C:\WINDOWS\System32"*.txt -Recurse |选择对象全名
https://stackoverflow.com/a/24468733/262852
我正在从这些类型的命令中寻找带有 powershell 的"file"对象数组。
可能更好的语法:
Copy-Item -Filter *.txt -Path c:\data -Recurse -Destination C:\temp\text
但不是复制项目,我只想要一个对象,或者更确切地说,对象数组。不是文件的路径,不是文件,而是可能是 powershell 引用或指向文件的指针。
(现在阅读 fine 手册。)
最佳答案
tl;dr
当您在变量中捕获 PowerShell 语句的输出时(例如,$output = Get-ChildItem ...
),它是自动 如果有两个或更多输出对象,则收集在一个数组中。
为了确保数组总是被使用——即使只有一个单个或没有输出对象——使用 @(...)
(例如,$output = @(Get-ChildItem ...)
)
PowerShell cmdlet,例如 Get-ChildItem
,可以输出任意数量的对象。
Get-ChildItem
输出 [System.IO.FileInfo]
和/或 [System.IO.DirectoryInfo]
对象,取决于是否正在输出有关文件和/或目录的信息。
确定给定 cmdlet 的输出对象类型:
(Get-Command Get-ChildItem).OutputType
获取子项 |获取成员(member)
。Get-Help -Full Get-ChildItem
也应该显示 OUTPUTS
部分,online help 也是如此,尽管在 Get-ChildItem
的情况下它不太具体,因为 Get-ChildItem
也适用于文件系统以外的提供程序。当输出到管道时,每个输出对象单独传递给管道中的下一个命令,通常是立即处理.
当在变量 ($var = ...
)中捕获输出时,以下逻辑适用:
[object[]]
(即使实际元素具有特定类型)。$null
和枚举上下文中,如 空集合;它导致没有可见的输出 - 见 this answer了解详情。因此,当在变量中捕获时,给定命令可能按情况返回:
[System.Management.Automation.Internal.AutomationNull]::Value
)为确保给定命令的输出始终被视为数组,您有两种选择:
使用 @(...)
,array subexpression operator ;例如
$fileSystemObjects = @(Get-ChildItem -Recurse -Filter *.txt)
使用 [array]
对目标变量进行类型约束(相当于 [object[]]
,并且比 [object[]]
更易于键入)。
[array] $fileSystemObjects = Get-ChildItem -Recurse -Filter *.txt
也就是说,在 PSv3+ 中,您通常不必担心给定变量是包含标量(单个值)还是数组,因为标量可以隐式地被视为数组:您甚至可以在标量上调用 .Count
,并使用索引 ([0]
, [-1]
) - 参见 this answer了解详情。
关于windows - 从 Get-ChildItem -Path 返回对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55765010/
我尝试了一些选项来迭代我的目录并在以下命令之间获得巨大的性能差异: 慢: Get-ChildItem -Directory -Force -Recurse -Depth 3 -Include '$tf
我今天才刚刚开始使用PowerShell,并且我有一个意向列表文件,其中包含数组中的一些模式,例如: $matchPattern = ( "SomeCompany.
我制作的 powershell 脚本有问题。该脚本的目的是从各种资源、CMDB og 和其他系统收集信息,并将它们收集在一个组合报告中并发送。 除了一个一直困扰我的提示外,我的一切工作正常。在我的脚本
我编写了一个脚本,用于从服务器归档日志文件。除了 Get-ChildItem 的递归性与否,我的一切都很好...... 我似乎遇到的问题是,当 Get-ChildItem 不是递归的并且 -Inclu
使用PowerShell 4.0, 我试图获取多个目录的大小,并且在Windows告诉我的内容和我的代码告诉我的内容之间却得到非常不一致的结果。 有问题的代码是: $temp4 = ($folderI
我正在使用Powershell脚本删除文件夹中的某些文件,然后将其余文件移到预定义的子文件夹中。 我的结构看起来像这样 Main (Contains a bunch of pdb and dl
我试图获取特定子文件夹结构中文件的递归列表,然后将它们保存到表中,以便可以使用foreach循环处理每一行。我有以下代码: $table = get-childitem -recurse | wher
大家好,我的文件夹结构如下 D:\Exclude Include Include1 Exclude Include 我需要的是我想过滤目录 In
我在 d: 下有 3 个 ps1 文件 -a--- 6/19/2015 2:52 PM 104 Untitled1.ps1
我们生成名称中带有日期的文件。(* 下面是日期的通配符)我想获取最后一个文件,并且包含该文件的文件夹的标题中也有一个日期(仅月份)。 我正在使用 PowerShell,并安排它每天运行。这是到目前为止
我要申请多个filter在 PowerShell 脚本中,截至目前我只能添加单个 filter像下面 Get-Childitem "D:\SourceFolder" -recurse -filter
我正在尝试使用CreationTime命令获取Lastwritetime和get-childitem,并将其与相同的汇编时间进行比较,以检查每5分钟是否有任何差异。 奇怪的是,如果程序集没有更改,并且
我写了一个Powershell脚本来检查文件夹的内容,以及是否有LastWriteTime早于20分钟的文件通知我。我遇到的问题是,当我得到结果时,它包括电子邮件正文中的所有文件。我将如何编写该信息以
这个问题在这里已经有了答案: PowerShell output is crossing between functions (1 个回答) 2年前关闭。 Powershell 版本信息如下: Nam
再次尝试使用 PowerShell 删除文件。 我现在正在尝试删除以“Export_”开头的文件,然后是两位数的年份,然后是儒略日期。例如,今天是 Export_18309。 18309 之后还有其他
我有两种使用通配符模式获取文件的方式: Get-ChildItem "$ActivityLogDirectory/*.csv" 和 Get-ChildItem "$ActivityLogDirecto
平台上的第一篇文章;-) 场景:我有一个根文件夹,其中包含带有安装相关文件的子文件夹。一些子文件夹包含更多子文件夹和更多文件,子子文件夹。根文件夹下的每个子文件夹或其子文件夹都必须包含一个特定文件。
我的问题与元过滤器上发布的问题几乎相同。 我需要使用 PowerShell 脚本来扫描大量文件。问题在于“Get-ChildItem”函数似乎坚持将整个文件夹和文件结构插入内存中。由于驱动器在 30,
我目前正在编写一个可视化错误 GUI,它可以在处理时捕获任何异常,并为用户提供“易于理解”的错误消息。但似乎在使用 Get-ChildItem 时我无法捕获任何异常小命令。我是否必须使用与 try/c
我正在编写一个遍历目录并复制其中的每个文件和文件夹的递归函数。我在函数中进行的第一项检查是查看传入的路径是否有子级。为了找出答案,我使用以下方法: [array]$arrExclude = @("Ex
我是一名优秀的程序员,十分优秀!