J'ai un script:
function comparisonScriptAIX
{
Param(
$sideToCheck
)
#contenu de mon script
#tel que la création de fichiers
#l'exécution d'actions etc...
}
comparisonScriptAIX -sideToCheck
Si je lance ceci, j'obtiens une erreur:
comparisonScriptAIX : Argument manquant pour le paramètre 'sideToCheck'. Spécifiez un paramètre de type 'System.Object' et réessayez.
Cela a du sens car aucun argument n'est fourni au paramètre. Si je change un peu le code comme ceci:
comparisonScriptAIX -sideToCheck "Blabla"
Il s'exécutera. Maintenant, je veux que le script s'exécute via le Planificateur de tâches et passe un argument, donc j'ai supprimé le "blablabla" du script. J'ai créé une tâche et cette tâche exécute correctement le script lorsque je n'inclus pas "-sideToCheck". Mais lorsque j'inclus "-sideToCheck", rien ne se passe.
Programme/script:
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe
Ajouter des arguments (optionnel):
-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File G:\Scripts\check_AIX.ps1 -sideToCheck "CMDB"
Maintenant, je ne connais pas la syntaxe correcte pour passer l'argument de CMDB au paramètre du script Powershell. De plus, je ne suis pas sûr si la syntaxe en Powershell est correcte.
Pourquoi cela ne fonctionne-t-il pas, et comment puis-je résoudre ce problème?
EDIT 13-12-2022:
En fonction des commentaires/réponses, j'ai mis à jour le script:
comparisonScriptAIX -sideToCheck $sideToCheck
Et j'ai également ajouté la ligne suivante pour utiliser le journal qui est déjà dans le script:
"$(Get-Date -Format "yyyy-MM-dd HH:mm:ss") : $($sideToCheck)" | Out-File -encoding ascii $errorLog -append
Lorsque je lance ce script dans Powershell (donc pas encore de tâche), le résultat dans le journal est le suivant:
2022-12-13 10:52:24 :
Lorsque je le lance à partir du planificateur de tâches, cela ressemble à ceci:
2022-12-13 10:55:00 :
Les données (dans mon exemple "CMDB") ne sont pas encore passées au script. Je m'attends à voir ce qui suit dans le journal:
2022-12-13 11:03:00 : CMDB
Le script s'exécute, mais la valeur n'est pas encore passée.
EDIT 2 J'ai également essayé:
Param(
[Parameter()]
[string]$sideToCheck
)