此功能的目标是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:\Users\ProjectFolderCreation_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:\Desktop\FunctionInputs\PRJ"
$NetApp = "C:\Users\Desktop\FunctionOutputs\ProjectFolders\"+$env
$ProjectName = "$($ProjectCode)"
$ProjectFolder = $NetApp+"\$ProjectName"
#$ProjectFolder
$AdminAccess = "domain\GP_"+$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 = "domain\GP_$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
答案 0 :(得分:0)
如此处所述,您实际上对所有文件夹都进行了递归:
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**
}
删除“重命名项”行,您需要做的是使用新名称创建新的父目录,并将所有子文件夹移动到新目录,而无需重命名。
您需要管理员权限,以admin身份运行代码,然后重试。