Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 获取没有域路径的文件所有者名称_Powershell_Powershell 3.0 - Fatal编程技术网

Powershell 获取没有域路径的文件所有者名称

Powershell 获取没有域路径的文件所有者名称,powershell,powershell-3.0,Powershell,Powershell 3.0,我正在尝试获取文件所有者,而不以域/用户名格式显示 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

我正在尝试获取文件所有者,而不以域/用户名格式显示

 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 
所有者输出如下:

1stserver\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.Split('\'))[1])}}, FullName 

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

第二个元素,因为PowerShell对数组使用零原点。我的第一个倾向是使用
[-1]
,正如上面所说的“不管数组中有多少个元素,都取最后一个元素”。@JeffZeitlin如果你的域名或用户名中有反斜杠,你就会遇到更大的问题。如果它是第一个元素,我会说0,因为正如你所说的,它们是基于零的阵列。这是一个Windows安全描述符的重类型对象,该值总是以这种格式显示。@ConnorLSW-绝对正确,但谁知道Microsoft或任何其他网络操作系统提供商将来会做什么?如果历史是未来的任何指标,则Microsoft安全描述符看起来是相同的(就DACL而言)至少从Windows NT开始,可能在之前。