Я написав скрипт резервного копіювання в PowerShell. Я уповноважив її за допомогою Unblock-File, щоб його можна було запускати без взаємодії.
Я використав gpedit, щоб додати його до сценаріїв PowerShell, які будуть запускатися під час завершення роботи.
Хоча сценарій працює добре wenn виконаний безпосередньо він просто не працює на завершення роботи.
Я вимкнув швидке завантаження і сплячий режим, як описано у другій відповіді це питання але нічого не змінюється.
Як я можу дізнатися
- невдалий скрипт
- або сценарій взагалі не викликається
- і wtf відбувається під час вимкнення
Додаток: додаткова інформація
- Скрипт відкриває мережеве підключення до NAS і визначає мережевий диск
- Потім копіює локальні дані до новоствореної папки на цьому мережевому диску, використовуючи дату та час як назву папки
- після завершення процесу копіювання мережний диск відключається.
- Я вважав "при виключенні" хорошим аналогом для "деякої роботи". Я думаю, що коли вимикав комп'ютер навмисно, певний прогрес, швидше за все, стався.
- Я не знаю, чи це найкращий вибір зробити це під час вимкнення, але це найкращий вибір, який я знаю. Можливо, це може бути зроблено при кожній зміні файлу автоматично?
- Я використовував gpedit.msc для встановлення сценарію, і я перейшов до Computerkonfiguration- & gt; Налаштування Windows- & gt; Там я додав скрипт у виділеному "PowerShell-Scripts" -Tab. Iзмінив налаштування послідовності так, що спочатку виконуються сценарії PowerShell.
- Сценарій має локальний шлях, C: \ t
- Дані, які необхідно скопіювати, знаходяться на робочому столі та в папці документів певного облікового запису користувача.
Детальніше Я слідував за пропозиціями flolilolilo і додав рядок на початку мого сценарію, який в основному робить printf-debug (або це Write-Output-Debug?). Місцем, де я знайшов вихідний файл тексту, було
C:\Windows\System32\GroupPolicy\Machine\Scripts\Shutdown
Таким чином, скрипт, мабуть, викликається, але не робить нічого, крім виведення інформації про налагодження. Чи можна перенаправляти помилки та попередження в текстовий файл?
Ах, і як мені змонтувати NAS?
New-PSDrive -Name "backup" -PSProvider Filesystem -Root "\\169.254.100.100\share"
Третій додаток
Тут йде поточний код.
#+-------------------------------------------------------------------+
#| = : = : = : = : = : = : = : = : = : = : = : = : = : = : = : = : = |
#|{>/-------------------------------------------------------------\<}|
#|: | Authors: Aman Dhally; ariser | :|
#| :| Email: amandhally@gmail.com
#|: | Purpose: Smart Backup and create folder by Date
#| :|
#|: | Date: 29 November 2011 - 2017
#|: |
#| :| /^(o.o)^\ Version: n.a. |: |
#|{>\-------------------------------------------------------------/<}|
#| = : = : = : = : = : = : = : = : = : = : = : = : = : = : = : = : = |
#+-------------------------------------------------------------------+
#System Variable for backup Procedure
# $date = Get-Date -Format d.MMMM.yyyy
$date = Get-Date -Format yyyy.MM.dd.HH.mm.ss
Write-Output "This script was called at %(Get-Date)" | Out-File .\test.txt
New-PSDrive -Name "backup" -PSProvider Filesystem -Root "\\169.254.100.100\Krautlight_aktiv"
# $source = "D:\Tally\Data\"
$destination = "backup:\$date"
# $path = test-Path $destination
$homeprefix= "C:\Users\MyUser\"
$directories = @{ }
$directories.add($homeprefix+"Documents\eagle", "EDA\eagle")
$directories.add($homeprefix+"Documents\KL\Eaglelibraries", "EDA\eigeneLibraries")
$directories.add($homeprefix+"Desktop\Flansch", "CAD\Flansch")
$directories.add($homeprefix+"Desktop\BoCubeDateien", "CAD\Bopla")
try{
mkdir $destination
; write-outpot "mkdir passsed" | out-file .\test.txt -append;
}
catch
{ write-output "mkdir failed" | out-file .\test.txt -append }
ForEach($source in $directories.KEYS.GetEnumerator())
{
cd backup:\
$destpath=$destination+'\'+$directories.Get_Item($source)
Copy-Item -Path $source -Destination $destpath -Recurse
cd c:\
}
Remove-PSDrive "Backup"
Мої поточні дослідження показують робочий вихід повідомлень налагодження до файлу test.txt. І mkdir виходить з ладу.
Write-Output "This script was called at $(Get-Date)" | Out-File .\test.txt
?
try
- catch
(у поєднанні з out-file
-команди) допомагають визначити проблему? щось на зразок try{gci .\; write-output "gci passed!" | out-file test.txt -append;}catch{write-output "gci failed!" | out-file test.txt -append}