Я написал резервный скрипт в powershell. Я авторизовал его с помощью Unblock-File, чтобы его можно было запускать без взаимодействия.
Я использовал gpedit, чтобы добавить его в сценарии powershell для запуска при завершении работы.
Несмотря на то, что скрипт работает хорошо, но не выполняется напрямую, он просто не запускается при завершении работы.
Я отключил быструю загрузку и спящий режим, как описано во втором ответе на этот вопрос, но ничего не изменилось.
Как я могу узнать
- не работает ли мой сценарий
- или скрипт не вызывается вообще
- и WTF происходит во время выключения
Приложение: больше информации
- Скрипт открывает сетевое соединение с NAS и определяет сетевой диск
- Затем он копирует локальные данные во вновь созданную папку на этом сетевом диске, используя дату и время в качестве имени для папки.
- после завершения процесса копирования сетевой диск отключается.
- Я считал "при выключении" хорошим аналогом для "проделанной работы". Я думаю, что при преднамеренном выключении компьютера, скорее всего, произойдет некоторый прогресс.
- Я не знаю, является ли это лучшим выбором при завершении работы, но это лучший выбор, который я знаю. Возможно, это может быть сделано автоматически при каждом изменении файла?
- Я использовал gpedit.msc для установки скрипта и пошел в Computerkonfiguration-> Windows-Settings-> Scripts-> Shutdown. Там я добавил скрипт в отдельную «PowerShell-Scripts» -Tab. Я изменил настройки последовательности, так что сценарии PowerShell выполняются первыми.
- Сценарий имеет локальный путь, C:\Backupsoftware\Smart_Backup_Create_folders_by_Date_MK.ps1
- Данные, которые должны быть скопированы, находятся на рабочем столе и в папке документов определенной учетной записи пользователя.
Подробнее Я последовал советам 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 не удается.