Я пытаюсь исправить скрипт, и кажется, что я проиграл нить здесь. Я всегда получаю результат Успеха в моем файле журнала, это отличный результат, если честно, но даже если я удалю исходную папку, у меня получится Успех :(Скрипт Powershell для резервного копирования и копирования файла TNSNames.ora в локальной папке
Я не кодер, но У меня есть некоторые функции для работы, функция, которая все еще не работает, следующая: 1- Если папка или файл источника не существует, тогда предполагается создать запись в реестре со значением Fail, поэтому SCCM будет считать его обнаружением. Метод для оценки развертывания и также записать его в файл журнала: C: \ logs \ CopyTNSNames_1.0.log
Здесь вы являетесь моим кодом и не стесняйтесь использовать его, так как он отлично работает при копировании файл из сетевого ресурса, и он создаст резервную копию с отметкой времени на нем, конечно, один раз фиксируется:
# Function
Function writetolog ($nTxt){
$date = Get-Date
$sapce = ' '
$log_path = 'C:\logs\'
$log_name = $log_path + 'CopyTNSNames_1.0.log'
if(!(Test-Path -Path $log_path)){New-Item -ItemType directory -Path $log_path}
Add-content $log_name -value $date$sapce$nTxt
}
Function code_retour ($rc){
$date = Get-Date
$rc_ok = 0,3010
$Script_returnCode = 0
$CodeDeRetour = "Return code : ",$rc
if($rc_ok -contains $rc){
writetolog $CodeDeRetour
return $rc
}Else{
writetolog $CodeDeRetour
writetolog 'The script has failed'
writetolog ''
writetolog "**************************"
writetoreg ('Fail',$rc)
exit $rc}
}
Function writetoreg($status){
$date = Get-Date
$status_rc = 'RC = ' + $status[1]
$regpath_MyCompany = 'hklm:software\MyCompany'
$regpath_Tier = 'hklm:software\MyCompany\Applications'
$regpath_App = 'hklm:software\MyCompany\Applications\CopyTNSNames_1.0'
$regpath_DT = 'hklm:software\MyCompany\Applications\CopyTNSNames_1.0\Result'
if(!(Test-Path $regpath_MyCompany)){New-Item -Path $regpath_MyCompany}
if(!(Test-Path $regpath_Tier)){New-Item -Path $regpath_Tier}
if(!(Test-Path $regpath_App)){New-Item -Path $regpath_App}
if(!(Test-Path $regpath_DT)){New-Item -Path $regpath_DT}
If($status[0] -eq 'Succes'){
$result = 'Succes'
Set-ItemProperty -Path $regpath_DT -Name $result -Value $date}
If($status[0] -eq 'Failure'){
$result = 'Failure Timestamp ' + $date
Set-ItemProperty -Path $regpath_DT -Name $result -Value $status_rc}
}
cls
Function CopyOra
{
$PathFolder = "\\partage\ORAFiles\Source"
$DestinationFolder = "c:\Apps\Oracle\11.2\network\admin\"
if (!(test-path $DestinationFolder))
{
New-Item $DestinationFolder -ItemType Directory
"$(Get-Date) : Created folder $DestinationFolder" | Out-File "C:\Logs\CopyTNSNames_1.0" -Append
}
$Dir = get-childitem $PathFolder | Sort-Object Time -descending
$LOGFilesFound = $Dir | where { $_.extension -eq ".ora" }
"$(Get-Date) : processing files: $LOGFilesFound" | Out-File "C:\Logs\CopyTNSNames_1.0" -Append
write-host "$(Get-Date) : processing files: $LOGFilesFound"
foreach ($LOGFile in $LOGFilesFound)
{
write-host $PathFolder\$LOGFile
Try
{
If (Test-Path $DestinationFolder$LOGFile)
{
"$(Get-Date) : fichier trouvé $DestinationFolder$LOGFile ... Copie de backup en cours." | Out-File "C:\Logs\CopyTNSNames_1.0" –Append
$now=Get-Date -format "dd-MM-yyyy HH-mm"
$newFileName = "$LOGFile-$now"
copy-item -path "$DestinationFolder$LOGFile" -destination "$DestinationFolder$newFileName" -Container -Force:$true -Recurse
"$(Get-Date) : $DestinationFolder$newFileName créé." | Out-File "C:\Logs\CopyTNSNames_1.0" –Append
} else
{
write-host "$DestinationFolder$LOGFile non trouvé sur le poste"
"$(Get-Date) : $DestinationFolder$newFileName non trouvé localement." | Out-File "C:\Logs\CopyTNSNames_1.0" –Append
}
copy-item -path "$PathFolder\$LOGFile" -destination "$DestinationFolder$LOGFile" -Container -Force:$true -Recurse
"$(Get-Date) : Copy done $PathFolder\$LOGFile" | Out-File "C:\Logs\CopyTNSNames_1.0" –Append
}
Catch
{
"$(Get-Date) : copie non possible..." | Out-File "C:\Logs\" –Append
$Script_returnCode = code_retour $returnCode.ExitCode
write-host $returnCode.ExitCode
}
}
}
#Run main function
CopyOra
writetolog ""
writetolog "End of script"
writetolog "**************************"
writetoreg ("Success",$Script_returnCode)
exit $Script_returnCode
Надеюсь, вы поможете мне решить эту проблему. С уважением.
Привет и спасибо за Ваш ответ. – derspinne
Кажется, что не может записываться в реестр. 2017-02-14 13:56:51 Обработка файлов: 2017-02-14 13:56:51 c: \ Apps \ Oracle \ 11.2 \ network \ admin \ non trouvé localement. 2017-02-14 13:56:51 Copie effectuée de \\ partage \ ORAFiles \ Source \ Tnsnames.ora 2017-02-14 13:56:51 Код возврата: 0 2017-02-14 13:56: 51 Невозможный d'écrire dans la base de registre, fonction writetoreg 2017-02-14 13:56:51 Erreur détectée ... Détail: Невозможный de lier l'argument au paramètre «Путь», автомобиль il a la valeur Null. , С уважением. – derspinne
Теперь у вас есть объяснение вашей проблемы. Вы не можете писать в эту часть registre – Esperento57