我需要一种快速方法来使用GET-ACL拉取文件的所有者,并使用用户名而不是域路径创建变量。试图简单地替换域名不起作用。
<div>
<form method="post" action= "" id = "testing" >
<input type="hidden" name="tests" id="tests" value="">
<input type="hidden" name="teste" id="teste" value="">
</form>
</div>
提供此错误:
$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\', '')
这是有效的,但输出包含不需要的标题:
$user = GET-ACL | Select Owner
$user.Split('\')[1]
有没有人知道使用GET-ACL将用户名作为变量的简单方法?如果没有,我应该使用更好的cmdlet吗?
答案 0 :(得分:2)
改变这个:
$user = GET-ACL $lastImage.FullName | Select Owner
到此:
$user = GET-ACL $lastImage.FullName | Select -ExpandProperty Owner
<强>解释强>
您正在尝试替换PSCustomObject
类型而不是字符串,.Replace()
方法是字符串方法,这就是您收到错误does not contain a method named 'Replace'.
当您添加-ExpandProperty
时,您将获得字符串值,然后替换方法将起作用。
请参阅-ExpandProperty
对MSDN Blogs
答案 1 :(得分:0)
将$user.Replace('ANT\', '')
更改为$user.Owner.Replace('ANT\', '')
。因为您正在做的是引用对象的Owner属性。然后,您可以从第一行删除| Select Owner
,因为不需要它。
如下:
$user = Get-Acl $lastImage.FullName
$user = $user.Owner.Replace('ANT\', '')