Continuing with the (underexplained) infrastructure side of data science, in this post I’ll detail how to call a Python or R script remotely. For example, say you have a Python or R exe and the associated scripts on one server, while you want to call them from a PowerShell (.ps1) script on another server. How does this work? Via PowerShell’s Invoke-Command and its associated WinRM framework (which has supplanted the older RCP standard).
First.ps1 and which resides on the Desktop. It looks something like this:cd 'C:\Users\levi.thatcher\Desktop\'
Invoke‐Command ‐ComputerName remotebox ‐FilePath .\Remote.ps1
Remote.ps1 file (that is on the same machine and in the same directory as First.ps1). Remote.ps1 contains the commands that are sent to the remote box (called remotebox above):&$python = 'C:\Python27\python.exe'
$script = 'C:\Users\levi.thatcher\Desktop\test.py'
& $python $script
So one script calls the Invoke-Command and the other executes the Python (or R). Fairly simple. The only thing to watch out for is that the user executing the PowerShell (on the first box) has to have execute permission on the Python/R exe’s on the second box. And, as always, please let us know how to make this simpler!
Note: this doesn’t work when running the first PowerShell script as a SQL Agent job.