我正在整理一个脚本去一堆域计算机并复制一个文件。
我的代码是:
Get-ChildItem -Path \\$computer -Filter $filename -Recurse -ErrorAction SilentlyContinue | Select-Object Directory -outvariable $directory
现在我的问题是存储在变量中的结果是@{Directory=\\Computer\dir
我如何使它输出到变量只有\\Computer\dir
任何帮助或指导将不胜感激
从本质上讲,你的问题是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
中。
默认情况下,Select-Object
会创建一个具有所选属性的对象。因此,在您的情况下,您将获得一个名为Directory
的属性的对象。如果您只选择单个属性,则可以使用ExpandProperty
参数来“提升”,因为缺少更好的单词,对象的属性。
Get-ChildItem -Path \\$computer -Filter $filename -Recurse -ErrorAction SilentlyContinue `
| Select-Object -ExpandProperty Directory -outvariable $directory