J'essaie d'exécuter un script PowerShell sur un ordinateur distant. Le script ouvre une application Bloc-notes, crée un fichier et l'enregistre. J'exécute le script avec la commande ci-dessous dans la machine source:
Invoke-Command -ComputerName "na18actxdc" -ScriptBlock {D: \ NMAutomation \ trial_2.ps1}
La commande s'exécute pendant longtemps sur la source machine et pauses. Mais le fichier texte n'est pas créé. Quelqu'un pourrait-il aider ici?
Cependant, le même script, lorsqu'il est exécuté depuis la machine distante, s'exécute plus rapidement et le fichier texte est enregistré. J'ai essayé le même concept avec les scripts autoit et les options psexec. Aucun d'eux ne fonctionne.
Code sur une machine distante:
Import-Module "C:\Program Files (x86)\AutoIt3\AutoItX\AutoItX.psd1"
Invoke-AU3Run -Program notepad.exe
$windowtitle ="Untitled - Notepad"
Wait-AU3WinActive($windowtitle)
$windowhandle = Get-AU3WinHandle -Title $windowtitle
Show-AU3WinActivate -WinHandle $windowhandle
Send-AU3Key("I'm in notepad");
$windowhandle = Get-AU3WinHandle($windowtitle);
$controlHandle = Get-AU3ControlHandle -WinHandle $windowhandle -Control "Edit1"
Send-AU3ControlKey -ControlHandle $controlHandle -Key "{ENTER}simulate key strokes - line 1" -WinHandle $windowhandle
Close-AU3Win($windowtitle)
$windowtitlesaveas = "Save As"
$windowhandlesaveas = Get-AU3WinHandle ($windowtitlesaveas)
$controlHandlesaveas = Get-AU3ControlHandle -WinHandle $windowhandlesaveas -Control "Edit1"
$windowhandlesaveas -NewText "sample"
$controlHandlesaveas -Key "sample"
Invoke-AU3ControlClick -Title "Notepad" -Control "Button1" -NumClicks 1
Wait-AU3WinActive("Save As")
Set-AU3ControlText -Title "Save As" -Control "Edit1" -NewText "sample"
Send-AU3ControlKey -Title "Save As" -Control "Button1" -Key "{ENTER}"
3 Réponses :
Depuis Microsoft :
COMMENT EXÉCUTER UN SCRIPT SUR DES ORDINATEURS À DISTANCE
Pour exécuter un script local sur des ordinateurs distants, utilisez le paramètre FilePath d'Invoke-Command.
Par exemple, la commande suivante exécute le script Sample.ps1 sur les ordinateurs S1 et S2:
PowerShell
Invoke-Command -ComputerName S1, S2 -FilePath C: \ Test \ Sample.ps1
Les résultats du script sont renvoyés à l'ordinateur local. Vous n'avez pas besoin de copier de fichiers.
Change
Invoke-Command -ComputerName "na18actxdc" -FilePath D:\NMAutomation\trial_2.ps1
to
Invoke-Command -ComputerName "na18actxdc" -ScriptBlock {D:\NMAutomation\trial_2.ps1}
J'espère que cela vous aidera.
p >
Oui, j'ai essayé mais je n'obtiens pas la sortie souhaitée
Définissez ceci un peu plus, ou laissez-nous deviner.
@Neeraja, comme demandé en commentaire dans votre question: Où se trouve le script sur votre machine ou sur celle distante?
Pour l'attribut Scriptblock, j'ai placé le script sur une machine distante; Pour l'attribut Filepath, je l'ai placé dans la machine source
Je pense que ce qui se passe ici, c'est qu'en exécutant ceci: Invoke-Command -ComputerName "na18actxdc" -ScriptBlock {D: \ NMAutomation \ trial_2.ps1} la ps1 n'est pas exécutée mais simplement ouvert dans un processus de bloc-notes.
Je pense que ce que vous devez faire est d'essayer de lui dire de l'exécuter dans PowerShell.
Invoke-Command -ComputerName "na18actxdc" -ScriptBlock {PowerShell.exe -File D: \ NMAutomation \ trial_2.ps1}
J'ai essayé d'utiliser powershell.exe mais le script fonctionne pendant plus de 30 minutes.
Pour vérifier que ce que vous essayez de faire est même possible avec PowerShell Remoting, vous devez vérifier qu'il peut s'exécuter dans une session PSSession en direct.
Cela peut être fait comme ceci:
PS C:\Users\XXX> Enter-PSSession -ComputerName "na18actxdc" [na18actxdc]: PS C:\Users\XXX\Documents> D:\NMAutomation\trial_2.ps1
Si le script s'exécute avec succès, alors je ne vois pas pourquoi Invoke-Command ne devrait pas fonctionner. Si vous rencontrez toujours des problèmes, essayez d'écrire des messages de débogage.
Pouvez-vous essayer ceci s'il vous plaît:
Enter-PSSession -ComputerName na18actxdcpuisD: \ NMAutomation \ trial_2.ps1. J'ai le sentiment que les applets de commande Autoit destinées à une fenêtre interactive ne fonctionneront pas dans une session de ligne de commande.Est-ce qu'il s'est passé quelque chose avec ça?