【问题标题】:Select FullName and add-content to File选择全名并将内容添加到文件
【发布时间】:2015-06-18 12:37:58
【问题描述】:

我有以下 powershell 行:

$items = Get-ChildItem  -Path "C:\temp" -Filter "*ä*" -Recurse | Select FullName

我想将这些路径写入 *.txt 文件:

foreach ($item in $items){   
   add-content -Path C:\temp\test.txt -Value $item -Force
}

test.txt 中的输出:

@{FullName=C:\temp\ä}

我怎样才能只将 FullName 的值写入 txt 文件? 例如:

echo $item

在控制台输出:

C:\temp\ä

【问题讨论】:

  • write-host $item.FullName?
  • 没想到这么简单,谢谢!

标签: powershell


【解决方案1】:

PowerShell 的常见问题。 $items 不是一个全名数组,而是一个具有全名属性的对象数组。 (数组假设返回了多个项目。)

$items = Get-ChildItem  -Path "C:\temp" -Filter "*ä*" -Recurse | Select -Expand FullName

# Requires PowerShell v3.0 or above
$items = (Get-ChildItem  -Path "C:\temp" -Filter "*ä*" -Recurse).Fullname

【讨论】:

  • 两个例子都运行良好。第二个应该是 .FullName 而不是 .Fullname。感谢您的帮助!
  • @Matt 第二种语法仅适用于 PS3 或更高版本,请注意。昨天有一个问题是为什么那个语法不起作用,答案是“PS 版本太低”。
  • @SaintCore 这种情况在外观上会有所不同,并且由于属性不区分大小写,因此无论哪种方式都可以使用。
  • @Vesper 是的,这是真的,但 man 3.0 已经永远存在了......但不是每个人都拥有它。
  • 我希望我能在 3 小时前找到这个
【解决方案2】:

你应该可以这样做:

foreach ($item in $items){   
   add-content -Path C:\temp\test.txt -Value $item.FullName -Force
}

以下是查找此信息的常用方法:

Get-ChildItem | Get-Member

或者速记也一样:

dir | gm

这将列出从Get-ChildItem 返回的对象的所有属性、方法等。

【讨论】:

  • 正如我在上面的评论中所说,您的解决方案对我有用,但我认为 Matts 解决方案“更常见”,因为在过滤时已经摆脱了它。
猜你喜欢
  • 1970-01-01
  • 2019-04-12
  • 2022-08-10
  • 1970-01-01
  • 2014-08-27
  • 2011-07-16
  • 2012-11-29
  • 2012-01-19
  • 2019-08-12
相关资源
最近更新 更多