我试图用New-QADUser cmdlet创build用户。 我知道这个cmdlet有-HomeDrive开关。 但问题是,cmdlet只是将pathstring应用到用户的帐户,而不是像在使用ADUC控制台时那样在文件服务器上创build用户的主目录。 我怎样才能做到这一点corerctly?
创build用户帐户的脚本是否也具有对文件服务器的pipe理访问权限?
为什么不让脚本创build主驱动器? 很简单的例子:
$user = read-host -prompt "Enter Username" $server = "HOMEDRIVESERVER" $share = "usershare$" New-QADUser -name $user etc.. newitem -path \\$HOMEDRIVERSERVER.domain.com\$share -name $user -itemtype directory
这里唯一的问题就是在文件夹中设置ACL,这可能是通过set-acl来完成的。 这里有更多关于ACLS的信息..
http://chrisfederico.wordpress.com/2008/02/01/setting-acl-on-a-file-or-directory-in-powershell/
以这种方式编写脚本的好处是能够将脚本输出的内容输出到脚本审计的日志文件中。 当然,这并不一定会给你一个很好的MMC控制台。
使用$ Sam sam帐户名创build和连接主驱动器到用户的结果代码:
$HomeDir = "<Path>" $Sam = "<User's Sam Account Name>" $User = Get-QADUser -SamAccountName "$Sam" New-Item -Path $HomeDir -Name $Sam -ItemType Directory $UserDir = "$HomeDir\$Sam" $Rights = [System.Security.AccessControl.FileSystemRights]::FullControl $Inherit=[System.Security.AccessControl.InheritanceFlags]::ContainerInherit -bor [System.Security.AccessControl.InheritanceFlags]::ObjectInherit $Propogation=[System.Security.AccessControl.PropagationFlags]::None $Access=[System.Security.AccessControl.AccessControlType]::Allow $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("$Sam",$Rights,$Inherit,$Propogation,$Access) $ACL = Get-Acl $UserDir $ACL.AddAccessRule($AccessRule) Set-Acl $UserDir $ACL Set-QADUser -Identity $User -HomeDirectory "$UserDir" -HomeDrive "Z:"
powershell setfolderpermission.ps1
从http://www.powershell.nu/wp-content/uploads/2009/02/setfolderpermission.ps1下载
Function CreateHomeFolder { Param($userinfo) $homeserver = '\\homeserver' $HomeFolderRoot = "\home\' Mkdir ($homeserver + $HomeFolderRoot + $userinfo['AccountName']) } Function UpdateHomeDirRights2 { Param($userinfo) $homeserver = '\\taz' $HomeDrive = "S" $HomeFolderRoot = "\home\' $HomeDirectory = $homeserver + $HomeFolderRoot + $userinfo[*'AccountName'*] ./SetFolderPermission.ps1 -path $HomeDirectory -Access $userinfo[*'UserPrincipalName'*] -Permission FullControl }