J'exécute un script JSL à partir de PowerShell Core sous Windows. Quelqu'un a-t-il un bon moyen d'écrire sur la console à partir de JSL afin qu'il écrive dans mon script PowerShell ?
Actuellement, j'écris dans un fichier temporaire, puis dans le script PowerShell, je vérifie ce fichier en boucle et j'écris le contenu de ce fichier. En espérant que quelqu'un ait fait quelque chose de plus robuste.
Vous pourriez faire quelque chose comme ça. Voici (mon tout premier, plus ou moins) script powershell (merci github et le débordement de pile !) Corrigez le chemin d'accès au fichier de bureau ...
Write-Output "Starting JMP"
Start-Process -FilePath "jmp.exe" -ArgumentList "C:\Users\v1\Desktop\pstest.jsl"
Write-Output "Started JMP"
# https://gist.github.com/staaldraad/153ab9d26d49c387550bcb5f974f7910
# thanks @ https://gist.github.com/staaldraad
$socket = new-object System.Net.Sockets.TcpListener('0.0.0.0', 1080);
if($socket -eq $null){
exit 1;
}
$socket.start();
$client = $socket.AcceptTcpClient();
$stream = $client.GetStream();
$buffer = new-object System.Byte[] 2048;
# $file = 'c:/afile.exe';
# $fileStream = New-Object System.IO.FileStream($file, [System.IO.FileMode]'Create', [System.IO.FileAccess]'Write');
$encoding = new-object System.Text.AsciiEncoding
do
{
$rawresponse = $null;
while($stream.DataAvailable -or $rawresponse -eq $null) {
$rawresponse = $stream.Read($buffer, 0, 2048);
if ($rawresponse -gt 0) {
$response = $encoding.GetString($buffer, 0, $rawresponse)
# $fileStream.Write($buffer, 0, $read);
$response # really? that's all it takes to print to the console?
}
}
} While ($rawresponse -gt 0);
# $fileStream.Close();
$socket.Stop();
$client.close();
$stream.Dispose();
Write-Output "all done, exit in 5 seconds..."
Start-Sleep -Seconds 5
Voici un script JSL, pstest.jsl, pour le bureau...
s=socket();
s<<CONNECT></CONNECT>
Je pense que c'était nécessaire, mais je ne peux pas en être sûr après quelques faux départs...
Dialog from windows to allow PowerShell to open a port.Dialog from windows to allow PowerShell to open a port.Dialog from windows to allow PowerShell to open a port.Boîte de dialogue à partir de Windows pour autoriser PowerShell à ouvrir un port.
Et éventuellement
Right-click the .PS1 script on the desktop and ->Run in PowerShell.Right-click the .PS1 script on the desktop and ->Run in PowerShell.Right-click the .PS1 script on the desktop and ->Run in PowerShell.Cliquez avec le bouton droit sur le script .PS1 sur le bureau et -> Exécuter dans PowerShell.
Cool.Je vais me renseigner.
Il semble que vous ayez besoin de créer une DLL. JMP fonctionne bien avec ceux qui ont un seul paramètre. Cet argument pourrait être votre chaîne.