скрипт powershell при вимиканні не працює (win 8)


0

Я написав скрипт резервного копіювання в 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 виходить з ладу.


Що робить сценарій в основному? Чому б "при виключенні" був кращим вибором конкретно? Які налаштування GP використовуєте з цією установкою? Де знаходиться скрипт, подібний до шляху до файлу / файлу?
Pimp Juice IT

з'ясувати, чи взагалі це викликано: чому б не просто почати його Write-Output "This script was called at $(Get-Date)" | Out-File .\test.txt?
flolilolilo

@flolilolilo ок, я спробую це зробити.
Ariser

@flolilolilo: був цікавий результат. Занадто багато для коментарів. Я додам його до мого питання.
Ariser

1
не було б багатослівних у формі 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}
flolilolilo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.