SSHサーバーを介して開始され、Windowsサービスを開始/停止するスクリプトを作成したいと思います。 SSHユーザーはAdministratorグループの一部です。ただし、スクリプトを実行すると、サービスを開始できないというエラーが表示されます。
スクリプトが管理者権限で開始されていることを確認するにはどうすればよいですか? LinuxでSudo service myservice start/stop
を使用して同様のスクリプトを実行しました。そのようなものが存在する場合、私はWindowsで同等のものを探しています。
私のps1シェルは次のようになります:
function start() { Start-Service MyService // verify service started here }
function stop() { Stop-Service MyService // verify service stopped }
function status() { // Return Running/Stopped for MyService }
SSHスクリプトでPowerShellスクリプトを開始します。 Powershellは、それ自体を昇格させてから停止サービスを開始し、それらのステータスを確認することができます。
いくつかの擬似コード:
ssh user@server powershell.bat
Powershell.batには、サービスで必要なことを実行するために必要なすべてのコードがあります。
Bash/sshを使用したいことはわかっていますが、LinuxボックスからWindowsを管理する最も簡単な方法は、Python and WMI
http://timgolden.me.uk/python/wmi/index.html
http://timgolden.me.uk/python/wmi/cookbook.html
http://timgolden.me.uk/python/wmi/tutorial.html
import wmi
# Open a connection to a remote machine
c = wmi.WMI (
computer="other_machine",
user="you",
password="something"
)
# start the service
c.<service>.StartService ()
これは、BASH/SSHが必要ない場合に私が知っている最も簡単な方法です。SSHを使用する必要がある場合は、PythonおよびWMIを任意のマシンにインストールする必要があるため、より複雑になります。これを実行したい場合は、すべてのマシン(VBScript、Powershellなど)に既にインストールされている言語を使用することをお勧めします。この方法では、一部の管理者が使用していないWindowsボックスでWMIサービスが有効になっていることも前提としています。するのが好きです。
Linuxボックスは混合環境の管理に最適ですが、作業に適したツールを使用するようにしてください。ポケットナイフは木を切り倒しますが、チェーンソーは木を切り倒すために作られました。
開始= net rpc service start SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD
停止= net rpc service stop SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD
ステータス= net rpc service status SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD
パスワードにスペシャルが含まれている場合は、バックスラッシュでエスケープします\
。