पर एक्सेस अस्वीकार कर दी गई है मैंने एक स्क्रिप्ट लागू की है जहां मैं सर्वर ए पर सर्वर ए पर कुछ फ़ाइलों की प्रतिलिपि बनाने की कोशिश कर रहा हूं। मुझे आपको प्रक्रिया की व्याख्या करने दें।कॉपी
मैंने एक लूप शुरू किया जो दो बार दौड़ने जा रहा है और पहले निष्पादन में मैं ऐप पूल रोक रहा हूं और ऐप पूल शुरू कर रहा हूं और बैकअप बनाने और फ़ाइलों की प्रतिलिपि बनाने की कोशिश करने से पहले लेकिन यह मुझे एक त्रुटि दे रहा है पहुँच से मना कर रहा है, लेकिन मैं फ़ोल्डर में सभी अनुमति संपादित लेकिन स्क्रिप्ट के माध्यम से यह मुझे कॉपी और सर्वर ए से सर्वर 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
आप फ़ाइल प्रतिलिपि पहले server2 साथ प्रमाणित करने के शुद्ध उपयोग करने का प्रयास किया है? – Goldn123
फिर भी यह डबल-हॉप मुद्दा है। जब आप एक कंप्यूटर से दूसरे कंप्यूटर में कनेक्ट करने के लिए इनवॉक कमांड का उपयोग करते हैं, तो आपको तीसरे से कनेक्ट करने में समस्याएं होंगी। जैसे आपकी लिपि में 'कॉपी-आइटम'। आपके अंतिम प्रश्न में, मैंने इस [तकनीकी पोस्ट] को जोड़ा है (https://blogs.technet.microsoft.com/ashleymcglone/2016/08/30/powershell-remoting-kerberos-double-hop-solved-securely/)। इसके आसपास इसके कुछ तरीके हैं। कनेक्ट करने के लिए उपयोग करने के लिए ताजा क्रेडिट पास करना आसान तरीका है। अपने स्क्रिप्टब्लॉक 'param' में' $ mycreds' जोड़ें। या 'invoke-command' से पहले पहले कंप्यूटर से कॉपी करें। या अन्य लिंक किए गए तरीकों में से कोई भी – BenH
@ बीएनएच हाँ आप सही हैं, लेकिन मैंने $ mycreds को लागू करने के लिए बहुत कुछ करने की कोशिश की लेकिन यहां भाग्य नहीं मिल रहा है, तो क्या आप कृपया मेरी मदद कर सकते हैं कि मैं इसे पैरामीटर पास करने के साथ कैसे कार्यान्वित कर सकता हूं जैसा कि आप देख सकते हैं उपरोक्त लिपि में। –