Eu escrevi um script de backup no powershell. Eu autorizei com Unblock-File, para que possa ser executado sem ter que interagir.
Eu usei o gpedit para adicioná-lo aos scripts do PowerShell para serem executados no desligamento.
Enquanto o script funciona bem quando executado diretamente, ele simplesmente não é executado no desligamento.
Desativei a inicialização rápida e a hibernação, conforme descrito na segunda resposta do esta pergunta mas nada muda.
Como posso descobrir
Adendo: mais informações
Mais detalhes Eu segui as sugestões do flolilolilo e adicionei uma linha no início do meu script, que basicamente faz alguns printf-debug (ou é Write-Output-Debug?). O lugar onde encontrei o arquivo de saída de texto foi
C:\Windows\System32\GroupPolicy\Machine\Scripts\Shutdown
Portanto, o script aparentemente é chamado, mas não faz nada além de colocar as informações de depuração. Posso redirecionar erros e avisos para um arquivo de texto?
Ah, e como montei o NAS?
New-PSDrive -Name "backup" -PSProvider Filesystem -Root "\169.254.100.100\share"
Terceiro Adendo
Aí vem o código atual.
#+-------------------------------------------------------------------+
#| = : = : = : = : = : = : = : = : = : = : = : = : = : = : = : = : = |
#|{>/-------------------------------------------------------------\<}|
#|: | Authors: Aman Dhally; ariser | :|
#| :| Email: [email protected]
#|: | 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"
Minhas investigações atuais mostram uma saída funcional de mensagens de depuração para o arquivo test.txt. E o mkdir falha.