Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Access is denied on copy

I have implemented a script where I'm trying to copy some files on Server A to Server B. Let me explain you the process.

I started one loop which is going to run twice and in first execution I'm stopping the app pools and start app pools and than creating the backup and than will trying to copy the files but it's giving me an error that the access is denied but I edit all permission to the folder but through script it's not allowing me to copy and replace the files on Server 2 from Server A.

# Embedding the password in the script.
"Setting  Variables"
$MyDomain = "ranbi" ;
$MyClearTextUsername = "shian" ;
$MyClearTextPassword = "sham@01" ;
$MyUsernameDomain = $MyDomain + '\' + $MyClearTextUsername;
$SecurePassword = ConvertTo-SecureString -String $MyClearTextPassword -AsPlainText -Force ;
$MyCreds = New-Object System.Management.Automation.PSCredential $MyUsernameDomain,$SecurePassword ;

#System Variable for backup Procedure
$date = Get-Date -Format d-MMMM-yyyy-h-m-s                                                             #Variable is used to get the date and time

for ($i=1; $i -le 2; $i++) {
    $servername = "server" + $i
    $backupsrc = "\\$servername\C$\Program Files (x86)\service\healthService\v1_0"                     #backup directory for source Code
    $backupdes = "\\$servername\C$\Temp\ICS-$date"                                                     #destination for backup appending with date time
    $sourcesrc = "\\server1\C$\Deployment\Health\bin"                                                  #source directory for source Code
    $destinationsrc = "\\server1\C$\Program Files (x86)\service\healthService\v1_0\bin"                #destination directory for source Code on Server1
    $forcetwo ="\\server2\C$\bin"                                                                      #destination directory for source Code on Server2
    $sourceweb = "\\Server1\C$\Deployment\Health\web.config"                                           #source directory for webconfig
    $destinationweb = "\\server1\C$\Program Files (x86)\service\healthservice\v1_0\web.config"         #destination directory for webconfig on Ser1
    $destweb = "\\Server2\C$\Program Files (x86)\service\web.config"                                   #destination directory for webconfig on Ser2
    $pathback = Test-Path $backupdes                                                                   #verifying the backup destination path
    $appPoolName = "HealthService"                                                                     #Initialized App Pool Name
    $forcethree = "\\Server2\C$\bin"                                                                   #webconfigfile source for Server2
    $forcefour = "\\Server2\C$\Program Files (x86)\service\healthService\v1_0\bin"                     #webconfigfile destination for Server2

    # Placing the script under a ScriptBlock
    #####
    $MyScriptblock = {
        Param($appPoolName,$pathback,$date,$backupsrc,$backupdes,$sourcesrc,$destinationsrc,$sourceweb,$destinationweb,$servername,$forcetwo,$destweb,$forcethree,$forcefour)

        function fnStartApplicationPool([string]$appPoolName) {
            Import-Module WebAdministration
            if ((Get-WebAppPoolState $appPoolName).Value -ne 'Started') {
                Start-WebAppPool -Name $appPoolName
            }
        }

        function fnStopApplicationPool([string]$appPoolName) {
            Import-Module WebAdministration
            if ((Get-WebAppPoolState $appPoolName).Value -ne 'Stopped') {
                Stop-WebAppPool -Name $appPoolName
            }
        }
        if ($pathback -eq $false) {
            #Copying Data from Source to Destination
            Copy-Item  -Recurse $backupsrc -Destination $backupdes
            Write-Host "Backup Successful on server $servername"

            #Validating the apppool value
            Import-Module WebAdministration
            if ((Get-WebAppPoolState $appPoolName).Value -ne 'Stopped') {
                #Stop apppool
                Stop-WebAppPool -Name $appPoolName
                Write-Host "AppPool Stopped Successfully for $servername"
            }
            if ($servername -eq 'server1') {
                #Copying Data from Source to Destination
                Copy-Item $sourcesrc -Destination $destinationsrc -Recurse -Force               
                Copy-Item $sourcesrc -Destination $forcetwo -Recurse -Force
                Copy-Item $sourceweb -Destination $destinationweb -Recurse -Force
                Copy-Item $sourceweb -Destination $destweb -Recurse -Force
            }
            if ($servername -eq 'server2') { 
                #Copying Data from Source to Destination
                Copy-Item $forcethree -Destination $forcefour -Recurse -Force
            }
            #Start apppool
            Start-WebAppPool -Name $appPoolName
            Write-Host "AppPool Started Successfully on $servername"
            cd c:\
        }
    }

    $result = Invoke-Command -ComputerName $servername -Credential $MyCreds -ScriptBlock $MyScriptblock -ArgumentList $appPoolName,$pathback,$date,$backupsrc,$backupdes,$sourcesrc,$destinationsrc,$sourceweb,$destinationweb,$servername,$forcetwo,$destweb,$forcethree,$forcefour ;
    $result ;
}

cd c:\

I'm getting the below error:

Access to the path 'bin' is denied.
    + CategoryInfo          : PermissionDenied: (\\Server2\C$\bin:String) [Copy-Item], UnauthorizedAccessException
    + FullyQualifiedErrorId : CreateDirectoryUnauthorizedAccessError,Microsoft.PowerShell.Commands.CopyItemCommand
like image 934
Shian JA Avatar asked Feb 07 '17 08:02

Shian JA


People also ask

How do I fix access denied error?

Right-click the file or folder, and then click Properties. Click the Security tab. Under Group or user names, click your name to see the permissions that you have. Click Edit, click your name, select the check boxes for the permissions that you must have, and then click OK.

Can't copy encrypted files Access Denied?

If you get Access is denied message when opening encrypted files, you may need to first export the Encrypting File System (EFS) certificate and key. This occurs because either you do not have permission to view the file or the key that was used to encrypt the file is probably not on the other computer.

Why can't I copy documents?

Your “copy-paste not working in Windows' issue may be caused by a temporary glitch, software interference, device drivers, or a corrupted system file, etc. For some people, the Copy and Paste options are grayed out in the right-click context menu, and the keyboard shortcuts (Ctrl+C and Ctrl+V) do nothing.


1 Answers

Just use WebDeploy cmdlets if you are trying to sync some sites in your IIS farm.

Power Shell IIS cmdlets

Sync-WDServer, Sync-WDSite etc.

like image 76
zerocool18 Avatar answered Oct 03 '22 16:10

zerocool18