首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Select-Object中修改/转换数据

在Select-Object中修改/转换数据
EN

Stack Overflow用户
提问于 2014-10-25 03:46:50
回答 3查看 9.6K关注 0票数 10

假设我有一份物品清单。我想导出到csv,但我想在此之前做一些计算/修改。

基本上,设置如下所示:

代码语言:javascript
复制
PS C:\Files> gci
Directory: C:\Files

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        10/23/2014   6:03 PM      11084 Blob.txt
-a---        10/13/2014   1:32 PM      31591 dates.txt
-a---         2/11/2014   1:46 PM      11990 out.txt

PS C:\Files> $data = gci

而且我可以很容易地选择我想要放入CSV的项目。为简洁起见,省略了实际的Export-CSV部分

代码语言:javascript
复制
PS C:\Files> $data | Select-Object FullName,name

但我真正想做的是计算一些列,并将那些列包括在CSV中。举个例子,假设我想计算一下'\‘字符,以了解文件夹的深度。我想你可以知道我在这里尝试的是什么,即使它出错了。

代码语言:javascript
复制
PS C:\Files> $data | Select-Object FullName,name,FullName.Split('\').Count
Select-Object : A positional parameter cannot be found that accepts argument '1'.    

有没有办法让它起作用呢?

EN

回答 3

Stack Overflow用户

发布于 2014-10-25 03:51:21

您需要的是一个calculated property (感谢Ansgar Wiechers更正了我的术语并提供了一个链接)来为您做这件事。您可以在Select命令中创建一种即兴哈希表来完成此操作,如下所示:

代码语言:javascript
复制
PS C:\Files> $data | Select-Object FullName,name,@{name='FolderDepth';expression= {$_.FullName.Split('\').Count}}

这可以缩写为@{n='Name';e={scriptblock}},其中n代表名称,并且可以与l (label的缩写)互换。e是expression的缩写。

票数 18
EN

Stack Overflow用户

发布于 2014-10-25 03:49:32

是。您正在寻找的是使用calculated property的更复杂的Select-Object语句。语法示例:

@{Label = "Calculation";Expression ={$_.FullName.Split('\').Count}}

然后将其插入到select语句中,通常使用其他变量。

代码语言:javascript
复制
$data | Select-Object FullName,name,@{Label = "TheCount";Expression ={$_.FullName.Split('\').Count}}
票数 3
EN

Stack Overflow用户

发布于 2014-10-25 04:16:49

我的建议(也比在select中更具可读性):

代码语言:javascript
复制
$data | % {Add-Member -name FolderDepth -Value $_.FullName.split("\").Count -MemberType NoteProperty -InputObject $_} | select FullName,Name,FolderDepth

这将向$data添加一个属性,您可以像任何其他属性一样在管道中通过$_.FolderDepth进一步使用该属性。

这个属性的不同之处在于,如果您想在以后使用它进行操作,那么在管道之后也可以使用该属性

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26555204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档