我的任务是审核工作中的文件服务器,以查看目录和文件所有权以及后续的元数据。我已经打乱了互联网,使我可以将返回所需数据的脚本串在一起。到目前为止,我创建的脚本如下:
Get-ChildItem -r -Path '\\SERVERNAME.wan.net\launshared\Training' |
Select DirectoryName, UNC_Path_Parent_DIR, Name, Type, Extension,
@{N='Owner';E={$_.GetAccessControl().owner}},
@{N='SizeInKb';E={$_.Length/1kb}}, CreationTime, LastAccessTime,
LastWriteTime |
epcsv 'C:\Users\USERNAME\Desktop\Information Management\TrainingTEST - 2018- SCRIPT_RESULT.xls' -En UTF8 -NoType -Delim ','
请忽略UNC_Path_Parent_DIR
条目,这只是在导出的CSV文件中插入没有返回数据的字段标题。
该脚本可以正常运行,尽管有一个例外……它不返回目录的完整UNC路径!请注意,将为文件返回完整的UNC路径,但不 目录!
我已经在Internet上搜索解决方案,并向我们的IT专家询问,但是我一生都找不到找到列出目录和文件的完整UNC路径的解决方案。
答案 0 :(得分:3)
UNC path
不是来自Get-ChildItem
的对象的属性。这意味着它需要手动添加。就像您一样,可以通过在property
中添加带有expression
的自定义Select-Object
来做到这一点。
请记住,当其他人阅读您的代码时,格式化事物并使用完整的参数名称总是更好。十年后再次阅读时,它也使阅读和理解变得更容易;)
我会告诉您可以找到获得UNC path
here和here的代码,为您提供帮助。剩下的唯一事情就是在Select-Object
中的正确位置实现它。我把它留给您练习:
Get-ChildItem -Recurse -Path '\\fsabbey12.wan.net\launshared\Training' | Select-Object FullName, DirectoryName,
Name, Type, Extension,
@{N='UNC';E= {
# Code to get the UNC Path
}},
@{N='Owner';E= {$_.GetAccessControl().owner}},
@{N='SizeInKb';E={$_.Length/1kb}},
CreationTime, LastAccessTime, LastWriteTime
我认为这会让您入门。
答案 1 :(得分:1)
我也将其保留在此处,作为其他可能的方式(尽管@DarkLite1答案相当完整地涵盖了这个问题)。
<Menu.Resources>
<Image x:Key="img" x:Shared="false" Source="pack://application:,,,/Resources/checked_lightslategray.ico"/>
<Style TargetType="MenuItem">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected}" Value="true">
<Setter Property="Icon" Value="{StaticResource img}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Menu.Resources>
可能会在没有任何自定义表达式的情况下满足您的需求。
如果您像这样使用FullName
:
Get-ChildItem
然后使用Get-ChildItem -Path \\servername.domain.com\C$\foldername\
将为您提供UNC格式的路径:
| Select FullName
请记住,它仅适用于引用远程文件夹的情况,而不适用于运行脚本的计算机上的文件夹。如果您在本地文件夹上使用\\servername.domain.com\C$\foldername\\FirstSubfolder
,则格式如下:
FullName