Powershell创建文件夹并分配安全用户



此函数的目标是1(复制模板文件夹,2(重命名该模板文件夹,3(分配文件夹安全用户。

我的代码遇到的问题是:

1( 不重命名复制的文件夹。我只想重命名父文件夹,而不想重命名子文件夹。

**Rename-Item -NewName { $_.Name -replace ("Template" -f $ProjectName)} -Verbose**

2( 我收到$TargetFolder.SetAccessRule($AccessRule(的错误

Exception calling "SetAccessRule" with "1" argument(s): "The trust relationship between this workstation and the primary domain failed.
"
At C:UsersProjectFolderCreation_TEST.ps1:40 char:6
+      $TargetFolder.SetAccessRule($AccessRule)

下面是我的完整代码。

Function FolderCreation{ 
Param (
# [Parameter (Mandatory=$true)] [STRING] $region,
[Parameter (Mandatory=$true)] [STRING] $env,
#[Parameter (Mandatory=$true)] [STRING] $server,
[Parameter (Mandatory=$true)] [STRING] $ProjectCode
)

$TemplatePath = "C:DesktopFunctionInputsPRJ"
$NetApp = "C:UsersDesktopFunctionOutputsProjectFolders"+$env 
$ProjectName = "$($ProjectCode)"
$ProjectFolder = $NetApp+"$ProjectName"
#$ProjectFolder
$AdminAccess = "domainGP_"+$ProjectName+"_ADMIN_LCL"
#$AdminAccess
if(Test-Path -Path $TemplatePath) {
Get-ChildItem $TemplatePath -Filter *Template* -Recurse |
Copy-Item -Destination $NetApp -Recurse -Verbose |
**Rename-Item -NewName { $_.Name -replace ("Template" -f $ProjectName)} -Verbose**
}

if(Test-Path -Path $ProjectFolder){
#get actual acl (access control list) entry 
$TargetFolder = Get-Acl $ProjectFolder
#configuring new acl
$AdminAccess = "domainGP_$ProjectName_ADMIN_LCL"
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($AdminAccess, "FullControl", "ContainerInherit, ObjectInherit", "None","Allow")
#setting new acl
**$TargetFolder.SetAccessRule($AccessRule)** 
$TargetFolder | Set-Acl "$ProjectFolder" -Verbose
#check if new entry was added 
Get-Acl "$ProjectFolder" | fl 
}
else{
Write-Host ( $ProjectFolder +" does not exists")
}
}
FolderCreation

如前所述,您可以对所有文件夹进行递归:

if(Test-Path -Path $TemplatePath) {
Get-ChildItem $TemplatePath -Filter *Template* -Recurse |
Copy-Item -Destination $NetApp -Recurse -Verbose |
**Rename-Item -NewName { $_.Name -replace ("Template" -f $ProjectName)} -Verbose**
}

删除"重命名项目"行,您要做的是用新名称创建新的父目录,并将所有子文件夹移动到新目录,无需重命名。

您需要管理员权限,请以管理员身份运行代码,然后重试。

最新更新