Python中调用PowerShell、远程执行bat文件实例_PowerShell教程-查字典教程网
Python中调用PowerShell、远程执行bat文件实例
Python中调用PowerShell、远程执行bat文件实例
发布时间:2016-12-28 来源:查字典编辑
摘要:python调用本地powershell方法1、现在准备一个简陋的powershell脚本,功能是测试一个IP列表哪些可以ping通:复制代...

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:jzhoutest_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策略的权限可能没有这个问题):

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

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

复制代码 代码如下:

def python_call_powershell(ip):

try:

args=[r"C:WINDOWSsystem32WindowsPowerShellv1.0powershell.exe","-ExecutionPolicy","Unrestricted", r"D:jzhoutest_ping.ps1",ip]

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

dt=p.stdout.read()

return dt

except Exception,e:

print e

return False

3、还有一点需要注意的是powershell脚本里最后必须要调用一下自己的函数,并且函数要有返回值,以便python能接收powershell脚本返回的结果,同时powershell脚本调用函数传参的方式是args[0],args[1]等等,然后在python里的args里传入对应的参数。

如果需要将策略设置为原来的默认状态,在powershell脚本最后加上:Set-ExecutionPolicy Restricted

python远程调用bat执行命令

1、首先安装python的wmi包

2、远程调用bat如下:

复制代码 代码如下:

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

import wmi,json

import time

logfile = 'logs_%s.txt' % time.strftime('%Y-%m-%d_%H-%M-%S', time.localtime())

#远程执行bat文件

def call_remote_bat(ipaddress,username,password):

try:

#用wmi连接到远程服务器

conn = wmi.WMI(computer=ipaddress, user=username, password=password)

filename=r"D:appsautorun.bat" #此文件在远程服务器上

cmd_callbat=r"cmd /c call %s"%filename

conn.Win32_Process.Create(CommandLine=cmd_callbat) #执行bat文件

print "执行成功!"

return True

except Exception,e:

log = open(logfile, 'a')

log.write(('%s, call bat Failed!rn') % ipaddress)

log.close()

return False

return False

if __name__=='__main__':

call_remote_bat(computer="192.168.1.2", user="testuser", password="testpwd")

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新PowerShell学习
    热门PowerShell学习
    脚本专栏子分类