2017-06-08 6 views
0

J'essaie de planifier la tâche sur le planificateur de tâches, tout fonctionne correctement, sauf si je coche "Exécuter avec les privilèges les plus élevés" ou "Exécuter l'utilisateur météo est connecté ou non"Le planificateur de tâches ne prend pas en charge l'option "Exécuter avec le privilège le plus élevé" et "Exécuter avec le privilège"

Dès que je coche ceci, le planificateur arrête de déclencher mon script.

Fichier de script- .Bat utilisant la commande Power Shell.

Quelqu'un peut-il comprendre ce qui s'est mal passé?

Edited- (Changed emplacement du fichier du lecteur au lecteur réseau)

@Echo Off 

:: SDate=DAYMONTHYEAR FORMAT of Systemdate 
::set SDate=%date:~7,2%%date:~4,2%%date:~10,4% 

::Variable for folder path 
for /D %%d in ("\\Server\Schd File\AA\*") do (
for %%a in ("%%d\*.*") do (SET "FPath=%%~dpa" 
Set "FName=%%~na") 
) 

For /F "Tokens=4-9 Delims=-" %%A In ("%FName%") Do (
    Set "Freq=%%B" 
    Set "ADate=%%F%%E%%D" 
) 

Set "DFormat=ddMMyyyy" 

IF %Freq% == Daily (
For /F UseBackQ %%A In (
    `Powershell "([datetime]::ParseExact('%ADate%','%DFormat%',[System.Globalization.CultureInfo]::CurrentCulture)).AddDays(-1).ToString('ddMMyyyy')"` 
) Do Set "DateF=%%A" 
) 

IF %Freq% == Weekly ( 
For /F UseBackQ %%A In (
    `Powershell "([datetime]::ParseExact('%ADate%','%DFormat%', [System.Globalization.CultureInfo]::CurrentCulture)).AddDays(-7).ToString('ddMMyyyy')"` 
) Do Set "DateF=%%A" 
) 

IF %Freq% == Monthly (
For /F UseBackQ %%A In (
    `Powershell "([datetime]::ParseExact('%ADate%','%DFormat%', [System.Globalization.CultureInfo]::CurrentCulture)).AddMonths(-1).ToString('MMMyyyy')"` 
) Do Set "DateF=%%A" 
) 


mkdir "%FPath%%Freq%\%DateF%" 
move "%FPath%\%FName%.*" "%FPath%%Freq%\%DateF%\" 

GoTo :EOF 
+0

Y a-t-il quelque chose dans l'onglet Historique des tâches? C'est peut-être moins un problème de codage qu'un problème de permission. – restless1987

+0

@ reposless1987- J'ai essayé d'exécuter un script simple pour "Exécuter avec les privilèges les plus élevés" ou "Exécuter l'utilisateur météo est connecté ou non" il fonctionne correctement. mais le script mentionné ci-dessus fonctionne bien Si je choisis l'option "Exécuter seulement si l'utilisateur est connecté". Je doute que cela soit dû à Power Shell ou à quelque chose. – Ashu

+0

Le script fonctionne-t-il? (que se passe-t-il si vous écrivez la date dans un fichier ('% time% >> c: \ ... \ test.txt'?), est-ce fait?) ou est-ce que les commandes PowerShell ne sont pas exécutées? Que faire si vous essayez d'exécuter les commandes PowerShell avec '-ExecutionPolicy bypass'? – iRon

Répondre

1

Il y avait une refonte majeure de la sécurité des tâches planifiées dans Vista et versions ultérieures pour empêcher les pirates d'installer une tâche planifiée qui pourrait accéder aux ressources du réseau.

Lorsque vous définissez la tâche à exécuter, qu'un utilisateur soit ou non connecté, vous devez définir les informations d'identification de l'utilisateur sur un utilisateur avec les autorisations nécessaires pour exécuter la tâche. Cet utilisateur doit également avoir défini la stratégie locale pour autoriser l'utilisateur à exécuter des fichiers de traitement par lots.

En outre, lorsqu'un utilisateur n'est pas connecté, le planificateur de tâches utilise l'authentification "Service-for-User" (S4U) qui empêche l'utilisateur d'accéder à toute fonctionnalité réseau. En supposant que votre chemin "D: \ AA *" est un lecteur local, cela peut ne pas poser de problème, mais s'il s'agit d'un lecteur réseau mappé, cela posera problème. "Exécuter avec les privilèges les plus élevés" n'accorde pas de privilèges supérieurs à l'utilisateur spécifié mais s'exécute sous un jeton de sécurité complètement distinct pour le compte Administrateur système créé lors de l'installation de Windows.

https://technet.microsoft.com/en-us/library/cc722152(v=ws.11).aspx

https://technet.microsoft.com/en-us/library/cc732613(v=ws.10).aspx

https://technet.microsoft.com/en-us/library/ee844140(v=ws.10).aspx

https://superuser.com/questions/640962/why-cant-a-task-scheduler-job-access-a-mapped-network-drive/782836#782836

La seule solution que je trouve pour exécuter une nuit de travail qui a besoin de l'accès au réseau était de quitter le fonctionnement de la machine et l'utilisateur connecté.