7

पर एक्सेस अस्वीकार कर दी गई है मैंने एक स्क्रिप्ट लागू की है जहां मैं सर्वर ए पर सर्वर ए पर कुछ फ़ाइलों की प्रतिलिपि बनाने की कोशिश कर रहा हूं। मुझे आपको प्रक्रिया की व्याख्या करने दें।कॉपी

मैंने एक लूप शुरू किया जो दो बार दौड़ने जा रहा है और पहले निष्पादन में मैं ऐप पूल रोक रहा हूं और ऐप पूल शुरू कर रहा हूं और बैकअप बनाने और फ़ाइलों की प्रतिलिपि बनाने की कोशिश करने से पहले लेकिन यह मुझे एक त्रुटि दे रहा है पहुँच से मना कर रहा है, लेकिन मैं फ़ोल्डर में सभी अनुमति संपादित लेकिन स्क्रिप्ट के माध्यम से यह मुझे कॉपी और सर्वर ए से सर्वर 2 पर फ़ाइलों को प्रतिस्थापित करने के लिए अनुमति नहीं है

# Embedding the password in the script. 
"Setting Variables" 
$MyDomain = "ranbi" ; 
$MyClearTextUsername = "shian" ; 
$MyClearTextPassword = "[email protected]" ; 
$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:\ 

मैं नीचे त्रुटि हो रही है:

Access to the path 'bin' is denied. 
    + CategoryInfo   : PermissionDenied: (\\Server2\C$\bin:String) [Copy-Item], UnauthorizedAccessException 
    + FullyQualifiedErrorId : CreateDirectoryUnauthorizedAccessError,Microsoft.PowerShell.Commands.CopyItemCommand
+0

आप फ़ाइल प्रतिलिपि पहले server2 साथ प्रमाणित करने के शुद्ध उपयोग करने का प्रयास किया है? – Goldn123

+0

फिर भी यह डबल-हॉप मुद्दा है। जब आप एक कंप्यूटर से दूसरे कंप्यूटर में कनेक्ट करने के लिए इनवॉक कमांड का उपयोग करते हैं, तो आपको तीसरे से कनेक्ट करने में समस्याएं होंगी। जैसे आपकी लिपि में 'कॉपी-आइटम'। आपके अंतिम प्रश्न में, मैंने इस [तकनीकी पोस्ट] को जोड़ा है (https://blogs.technet.microsoft.com/ashleymcglone/2016/08/30/powershell-remoting-kerberos-double-hop-solved-securely/)। इसके आसपास इसके कुछ तरीके हैं। कनेक्ट करने के लिए उपयोग करने के लिए ताजा क्रेडिट पास करना आसान तरीका है। अपने स्क्रिप्टब्लॉक 'param' में' $ mycreds' जोड़ें। या 'invoke-command' से पहले पहले कंप्यूटर से कॉपी करें। या अन्य लिंक किए गए तरीकों में से कोई भी – BenH

+0

@ बीएनएच हाँ आप सही हैं, लेकिन मैंने $ mycreds को लागू करने के लिए बहुत कुछ करने की कोशिश की लेकिन यहां भाग्य नहीं मिल रहा है, तो क्या आप कृपया मेरी मदद कर सकते हैं कि मैं इसे पैरामीटर पास करने के साथ कैसे कार्यान्वित कर सकता हूं जैसा कि आप देख सकते हैं उपरोक्त लिपि में। –

उत्तर

-2

क्या आपने प्रतिनिधि रिमोट सत्र में देखा है या जेईए (बस पर्याप्त व्यवस्थापक)? केर्बेरोज डबल-हॉप समस्या के लिए दोनों एक महान फिक्स होंगे।

प्रतिनिधि सत्रों के साथ शुरू करने के लिए this series of articles पर देखें।

0

यदि आप अपने आईआईएस फार्म में कुछ साइटों को सिंक करने का प्रयास कर रहे हैं तो बस वेबडिएट cmdlets का उपयोग करें।

Power Shell IIS cmdlets

सिंक-WDServer, सिंक-WDSite आदि

संबंधित मुद्दे