【问题标题】:Getting file owner name without domain path获取没有域路径的文件所有者名称
【发布时间】:2017-06-22 14:25:06
【问题描述】:

我正在尝试获取文件所有者,但不以 DOMAIN/USERNAME 格式显示。

 Get-ChildItem T:\file\ -Recurse| Where { 
 $_.PSIsContainer -eq $True} | select  @{Name='Date Modified'; Expression=
{$_.LastWriteTime.ToString('MM/dd/yyyy')}},  @{Name='Owner';E=
{$_.GetAccessControl().Owner}}, FullName 

所有者的输出是这样的:

第一个服务器\用户名

有没有办法做到这一点?:

用户名

我实际上是在尝试从文件路径中删除域名/服务器名称,只显示用户名。

【问题讨论】:

    标签: powershell powershell-3.0


    【解决方案1】:
        Get-ChildItem T:\file\ -Recurse| Where { 
     $_.PSIsContainer -eq $True} | select  @{Name='Date Modified'; Expression=
    {$_.LastWriteTime.ToString('MM/dd/yyyy')}},  @{Name='Owner';E=
    {(($_.GetAccessControl().Owner.Split('\'))[1])}}, FullName 
    

    使用您的代码,我们只需用分隔符“\”拆分“域\用户”,然后取第 1 个元素(即用户)

    【讨论】:

    • 第二个元素,实际上,因为 PowerShell 对数组使用零源。我的第一个倾向是改用[-1],因为它说“取最后一个元素,不管数组中有多少个元素”。
    • @JeffZeitlin 如果您的域名或用户名中有反斜杠,那么您遇到了更大的问题。
    • 如果它是第一个元素,我会说第 0 个,因为正如你所说,它们是从零开始的数组。这是 Windows 安全描述符的重类型对象,此值始终以这种格式显示。
    • @ConnorLSW - 绝对正确,但谁知道微软 - 或任何其他网络操作系统提供商 - 将来会做什么?
    • 如果历史是未来的任何指标,那么至少从 Windows NT 开始,Microsoft 安全描述符就看起来是相同的(就 DACL 而言),可能更早。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 2015-05-24
    • 2011-04-19
    相关资源
    最近更新 更多