Я написал резервный скрипт в 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 не удается.

0