我正在整理一个脚本,以访问一堆域计算机并复制文件。
我的代码是:
Get-ChildItem -Path \\$computer -Filter $filename -Recurse -ErrorAction SilentlyContinue | Select-Object Directory -outvariable $directory
现在我的问题是存储在变量中的结果是@{Directory=\\Computer\dir
我如何使其仅输出到变量\\Computer\dir
任何帮助或指导将不胜感激
答案 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