python 远程调用shell,Python中调用PowerShell、远程执行bat文件实例

python调用本地powershell方法

1、现在准备一个简陋的powershell脚本,功能是测试一个IP列表哪些可以ping通:

复制代码 代码如下:

function test_ping($iplist)

{

foreach ($myip in $iplist)

{

$strQuery = "select * from win32_pingstatus where address = '$myip'"

# 利用 Get-WmiObject 送出 ping 的查詢

$wmi = Get-WmiObject -query $strQuery

if ($wmi.statuscode -eq 0)

{

return "Pinging`t$myip...`tsuccessful"

}

else

{

return "Pinging`t$myip...`tErrorCode:" + $wmi.statuscode

}

}

}

test_ping args[0]

python简陋的调用方法:

复制代码 代码如下:

# -*- coding: utf-8 -*-

import subprocess

def python_call_powershell(ip):

try:

args=[r"powershell",r"D:\jzhou\test_ping.ps1",ip]  #args参数里的ip是对应调用powershell里的动态参数args[0],类似python中的sys.argv[1]

p=subprocess.Popen(args, stdout=subprocess.PIPE)

dt=p.stdout.read()

return dt

except Exception,e:

print e

return False

if __name__=="__main__":

ip=["1.1.1.1","2.2.2.2","3.3.3.3"]

print python_call_powershell(ip)

可能会报下面的错误(如果服务器本身开启了运行了powershell策略的权限可能没有这个问题):

50eb809f80d67e598729400ad9212438.png

第二种调用方法可以解决这个方法

2、调用时设置powershell执行策略,这种方法一旦将策略设置好后,后面就通用了,如果需要的话再在powershell脚本最后加上已经将策略改回去

复制代码 代码如下:

def python_call_powershell(ip):

try:

args=[r"C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe","-ExecutionPolicy","Unrestricted", r"D:\jzhou\test_ping.ps1",ip]

p=subprocess.Popen(args, stdout=subprocess.PIPE)

dt=p.stdout.read()

return dt

except Exception,e:

print e

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值