选择对象直接输出到变量

时间:2019-03-04 23:29:18

标签: powershell powershell-v2.0

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

我的代码是:

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

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

我如何使其仅输出到变量\\Computer\dir

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

2 个答案:

答案 0 :(得分:1)

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

此外,您的问题是,您必须将仅变量名称(没有$标记)传递给
-OutVariable

Select-Object -ExpandProperty Directory -OutVariable directory

也就是说,仅将directory传递给-OutVariable,以使其填充变量$directory
相比之下,-OutVariable $directory将在变量$directory中填充名称为包含的变量。

答案 1 :(得分:0)

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

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