Select-Object直接输出到变量

问题描述 投票:1回答:2

我正在整理一个脚本去一堆域计算机并复制一个文件。

我的代码是:

Get-ChildItem -Path \\$computer -Filter $filename -Recurse -ErrorAction SilentlyContinue | Select-Object Directory -outvariable $directory

现在我的问题是存储在变量中的结果是@{Directory=\\Computer\dir

我如何使它输出到变量只有\\Computer\dir

任何帮助或指导将不胜感激

powershell powershell-v2.0
2个回答
1
投票

从本质上讲,你的问题是How do I write the value of a single property of a object?(以及其他)的重复 - 简而言之:使用-ExpandProperty <propName>而不仅仅是[-Property] <propName>来提取属性值,而不是创建具有该名称属性的自定义对象。

另外,你的问题是你必须传递一个变量名称 - 没有$ sigil - -OutVariable

Select-Object -ExpandProperty Directory -OutVariable directory

也就是说,将directory传递给-OutVariable,让它填充变量$directory。 相比之下,-OutVariable $directory将填充一个变量,其名称包含在变量$directory中。


0
投票

默认情况下,Select-Object会创建一个具有所选属性的对象。因此,在您的情况下,您将获得一个名为Directory的属性的对象。如果您只选择单个属性,则可以使用ExpandProperty参数来“提升”,因为缺少更好的单词,对象的属性。

Get-ChildItem -Path \\$computer -Filter $filename -Recurse -ErrorAction SilentlyContinue `
| Select-Object -ExpandProperty Directory -outvariable $directory
© www.soinside.com 2019 - 2024. All rights reserved.