GET-ACL 没有域路径的文件所有者
GET-ACL file owner without domain path
我需要一种使用 GET-ACL 提取文件所有者的快速方法,并使用用户名而不是域路径创建变量。尝试简单地替换域没有用。
$user = GET-ACL $lastImage.FullName | Select Owner
$user = $user.Replace('ANT\', '')
提供此错误:
Method invocation failed because [Selected.System.Security.AccessControl.FileSecurity] does not contain a method named 'Replace'.
At line:1 char:1
+ $user = $user.Replace('ANT\', '')
我知道替换字符串是正确的,因为它有效:
$user = 'ANT\username'
$user = $user.Replace('ANT\', '')
我也尝试过使用 split 但没有成功:
$user = GET-ACL | Select Owner
$user.Split('\')[1]
还有这个,虽然有效,但输出包含不需要的 headers:
$user = Get-ChildItem $lastImage.FullName | select @{Name='Owner';E=
{(($_.GetAccessControl().Owner.Split('\'))[1])}}
有人知道使用 GET-ACL 将用户名作为变量的简单方法吗?如果没有,我应该使用更好的 cmdlet 吗?
改变这个:
$user = GET-ACL $lastImage.FullName | Select Owner
对此:
$user = GET-ACL $lastImage.FullName | Select -ExpandProperty Owner
解释:
您正在尝试替换 PSCustomObject
类型而不是字符串,.Replace()
方法是一个字符串方法,这就是您收到错误消息 does not contain a method named 'Replace'.
[=18 的原因=]
当您添加 -ExpandProperty
时,您将获得字符串值,然后替换方法将起作用。
参见:-ExpandProperty
MSDN Blogs
的进一步解释
将 $user.Replace('ANT\', '')
更改为 $user.Owner.Replace('ANT\', '')
。由于您正在做的是引用对象的所有者 属性。然后,您可以从第一行中删除 | Select Owner
,因为不需要它。
所以如下:
$user = Get-Acl $lastImage.FullName
$user = $user.Owner.Replace('ANT\', '')
我需要一种使用 GET-ACL 提取文件所有者的快速方法,并使用用户名而不是域路径创建变量。尝试简单地替换域没有用。
$user = GET-ACL $lastImage.FullName | Select Owner
$user = $user.Replace('ANT\', '')
提供此错误:
Method invocation failed because [Selected.System.Security.AccessControl.FileSecurity] does not contain a method named 'Replace'.
At line:1 char:1
+ $user = $user.Replace('ANT\', '')
我知道替换字符串是正确的,因为它有效:
$user = 'ANT\username'
$user = $user.Replace('ANT\', '')
我也尝试过使用 split 但没有成功:
$user = GET-ACL | Select Owner
$user.Split('\')[1]
还有这个,虽然有效,但输出包含不需要的 headers:
$user = Get-ChildItem $lastImage.FullName | select @{Name='Owner';E=
{(($_.GetAccessControl().Owner.Split('\'))[1])}}
有人知道使用 GET-ACL 将用户名作为变量的简单方法吗?如果没有,我应该使用更好的 cmdlet 吗?
改变这个:
$user = GET-ACL $lastImage.FullName | Select Owner
对此:
$user = GET-ACL $lastImage.FullName | Select -ExpandProperty Owner
解释:
您正在尝试替换 PSCustomObject
类型而不是字符串,.Replace()
方法是一个字符串方法,这就是您收到错误消息 does not contain a method named 'Replace'.
[=18 的原因=]
当您添加 -ExpandProperty
时,您将获得字符串值,然后替换方法将起作用。
参见:-ExpandProperty
MSDN Blogs
将 $user.Replace('ANT\', '')
更改为 $user.Owner.Replace('ANT\', '')
。由于您正在做的是引用对象的所有者 属性。然后,您可以从第一行中删除 | Select Owner
,因为不需要它。
所以如下:
$user = Get-Acl $lastImage.FullName
$user = $user.Owner.Replace('ANT\', '')