2016-02-17 58 views
0

我有此腳本更改配置文件夾的所有者

$dir = '\\knesmbmdc001\profiles' 
$logFile = 'C:\user_done.txt' 
Get-ChildItem -Directory $dir | % { 
$user = $_.Name 
$acl = Get-Acl –LiteralPath $_.FullName 
$userIdentity = New-Object System.Security.Principal.NTAccount $user 
$acl.SetOwner($userIdentity) 
Set-Acl –LiteralPath $_.FullName -AclObject $acl 
Add-Content $logFile $user 
} 

我得到這個錯誤

Exception calling "SetOwner" with "1" argument(s): "Some or all identity references could not be translated." 
Set-Acl : The security identifier is not allowed to be the owner of this object. 

我試圖把文件夾(用戶名)的名稱,將其設置爲所有者。

+0

如果我的答案是錯的,請更新您的問題:提供一個失敗的'$ user'值。 '$ user'值是否以用戶身份存在?你有多個域名? –

+0

即使在使用您的答案時,我也會得到同樣的錯誤。 – user770022

+0

好的。仍在等待問題的答案。 :-) –

回答

0

該文件夾的名稱不是有效的用戶名。您應該在腳本中輸出$user以查看哪一個失敗。我假設這是Windows域的漫遊配置文件。我看到兩個潛在的問題:

  1. 用戶是否存在?當用戶從域中刪除時,漫遊配置文件不會被刪除,因此它可能是已刪除的用戶
  2. Vista和更新版本中的配置文件最後可能有一個版本號,以避免混合不同操作系統之間的配置文件。 username.v2。所以你需要從中提取名稱。

如果(原因-eq 2),嘗試:

$user = $_.Name.Split(".")[0]