Je suis nouveau dans Windows et PowerShell au niveau administrateur. J'ai de l'expérience sous Linux et préfère utiliser Python mais j'ai du mal à comprendre les environnements Windows. Dans bash et Linux, je suis habitué à exécuter des scripts shell avec cronjobs, mais sous Windows, j'ai un problème lors de l'exécution de cette commande dans le planificateur de tâches. Je dois pouvoir exécuter Google Cloud Directory Sync pour que notre annonce soit synchronisée avec Gsuite. J'ai écrit un fichier batch qui fonctionne mais je pense qu'il est un peu daté pour utiliser un fichier chauve-souris
Start-Process sync-cmd.exe -ArguementList "-a -o -c C:\Somepath\config.xml"
ma meilleure supposition est que cela doit fonctionner comme un script PowerShell via le planificateur de tâches, mais je ne le fais pas. Je ne sais pas par où commencer. J'ai trouvé cela jusqu'à présent mais j'obtiens une erreur que je ne sais pas interpréter.
cd C:\Program Files\Google Apps Directory Sync\ sync-cmd.exe -a -o -c config.xml
désolé d'être un noob merci d'avance! Pour une ressource supplémentaire, voici également la page de commande GCDS.
3 Réponses :
Option 1 - Planifiez votre EXE directement via le planificateur de tâches
Pas besoin de PowerShell. Vous pouvez simplement fournir le chemin d'accès complet au fichier EXE et les arguments à l'aide de l'interface utilisateur du planificateur de tâches Windows. Vous pouvez spécifier un dossier de travail à l'aide de l'option Démarrer dans .
Option 2 - Planifier un script PowerShell à l'aide du Planificateur de tâches
Je trouve l'utilisation de l'option -File de PowerShell.exe très utile lors de la planification d'un script PowerShell à l'aide du planificateur de tâches. Dans ce cas, j'utiliserais l'applet de commande Start-Process et j'encapsulerais les arguments dans le script PowerShell.
Exemple
XXX
MSDN
PS C:\> Start-Process -FilePath "$env:comspec" -ArgumentList "/c dir `"%systemdrive%\program files`""
Exemple depuis mon ordinateur portable
Passer des arguments via le processus de démarrage
Si vous utilisez Start-Process, vous pouvez passer un tableau d'arguments via une chaîne délimitée par des virgules.
PowerShell[.exe] [-Command { - | <script-block> [-args <arg-array>] | <string> [<CommandParameters>] } ] [-EncodedCommand <Base64EncodedCommand>] [-ExecutionPolicy <ExecutionPolicy>] [-File <FilePath> [<Args>]] [-InputFormat {Text | XML}] [-Mta] [-NoExit] [-NoLogo] [-NonInteractive] [-NoProfile] [-OutputFormat {Text | XML}] [-PSConsoleFile <FilePath> | -Version <PowerShell version>] [-Sta] [-WindowStyle <style>] PowerShell[.exe] -Help | -? | /?
C'est vraiment utile merci! Cependant, je suis toujours un peu confus à cause de mon arrière-plan de shell. par exemple: dans CMD C: \ Program Files \ Google Apps Directory Sync> sync-cmd.exe -a -o -c config.xml fonctionne pour moi mais je ne comprends toujours pas comment transférer cela vers une conception plus évolutive dans PowerShell ou planificateur de tâches.
Vous pouvez écrire un script wrapper Example.ps1 . Lancez votre sync-cmd.exe à partir de Example.ps1 à l'aide de l'applet de commande start-process . Planifiez Example.ps1 via le Planificateur de tâches de Windows . Cela vous aide-t-il? Lorsque vous planifiez un script Powershell, vous devrez spécifier le chemin complet vers PowerShell.exe qui se trouve généralement dans% windir% \ System32 \ WindowsPowerShell \ v1 \
J'ai découvert que PowerShell est assez similaire à python et bash avec des variables. Cela fonctionne comme un script que j'attache ensuite au planificateur de tâches.
$msbuild = "C:\Program Files\Google Apps Directory Sync\sync-cmd.exe" $arguments = "-a -o -c config.xml" start-Process -FilePath $msbuild $arguments
Vous n'êtes pas obligé d'utiliser des variables ici. Vous contournez simplement votre faute d'orthographe en utilisant des "paramètres de position". Get-Help Start-Process -Parameter ArgumentList
vous montre que ce paramètre particulier est attendu en position 1 (ou à n'importe quelle position en tant que "paramètre nommé").
Votre erreur indique que Start-Process
n'a pas de paramètre appelé ArguementList
. Vous pouvez utiliser Get-Help
pour obtenir une liste des paramètres disponibles.
Start-Process sync-cmd.exe -ArgumentList "-a -o -c C:\Somepath\config.xml"
En effet, ArguementList
n'est pas disponible, mais ArgumentList
est disponible. Il y a simplement une faute de frappe dans votre commande.
Ce qui suit devrait très bien fonctionner:
Get-Help Start-Process -Parameter * | Select-Object Name
Quelle est l'erreur que vous ne savez pas interpréter.
Start-Process: Impossible de trouver un paramètre correspondant au nom de paramètre «ArguementList». À la ligne: 1 car: 42 + Start-Process sync-cmd.exe -ArguementList <<<< "-a -o -c C: \ Users \ svc_google \ C: \ Program Files \ Google A Sync \ config.xml" + CategoryInfo: InvalidArgument: (:) [Start-Process], ParameterBindingException + FullyQualifiedErrorId: NamedParameterNotFound, Microsoft.PowerShell.Commands.StartPr ocessCommand