'Call Powershell Script from Unix Shell Script

I have a powershell script on my Windows server which does some active directory operations. I wish to call that script from another Linux machine using a shell script.

I have installed powershell server on my Windows server and can communicate with my linux machine using key based ssh authentication.

Since Windows does not support SSH connections on its own, I have installed a software called Powershell server (http://www.powershellserver.com/) on my Windows server.

The issue is that my script just stops once the command for ssh to Windows server is executed.

My shell script below:

#!/bin/bash
echo "script run"
GROUP=$1
ACCOUNT=$2
ssh Administrator@<Windowshostname>
sleep 10
echo "<pathtoscript>\scriptname.ps1 -group $GROUP -account $ACCOUNT"
sleep 5
echo "exit"
exit

I have tried without the echo command as well and it still hangs. Any idea what I must be doing wrong here? How can I make it work please?



Solution 1:[1]

You cannot ssh into a Windows box unless you install a SSH daemon. You have two options:

1- You need to connect via Remote PowerShell (WINRM).

2- Install SSH daemon and connect via SSH (Check here)

3- You can also use PowerShell Web Access (Windows Servers.)

UPDATE: If you are using PowerShellServer.com then there are some things you can do to try to understand more.

  • Test scriptname.ps1 locally in Windows Server

  • Edit your scriptname.ps1 in the first line to create a file somewhere and after execution check if that file exists. This way you will know if script is being executed or not.

  • Execute Get-ExecutionPolicy and check you can run scripts. Remove constraints by temporary Set-ExecutionPolicy unrestricted

Solution 2:[2]

Tried the operation using an "expect" script and it all works well now.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Community
Solution 2