首页 > 脚本专栏 > PowerShell > Python调用PowerShell

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

投稿:junjie

这篇文章主要介绍了Python中调用PowerShell、远程执行bat文件实例,本文给出了python调用本地powershell方法、python远程调用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"
return "Pinging`t$myip...`tErrorCode:" + $wmi.statuscode

test_ping args[0]

python简陋的调用方法:

复制代码 代码如下:

# -*- coding: utf-8 -*-
import subprocess
def python_call_powershell(ip):
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策略的权限可能没有这个问题):

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

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

复制代码 代码如下:

def python_call_powershell(ip):
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
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):
#用wmi连接到远程服务器
conn = wmi.WMI(computer=ipaddress, user=username, password=password)
filename=r"D:\apps\autorun.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!\r\n') % ipaddress)
log.close()
return False
return False

if __name__=='__main__':
call_remote_bat(computer="192.168.1.2", user="testuser", password="testpwd")

您可能感兴趣的文章:
  • PowerShell中使用.NET将程序集加入全局程序集缓存
    PowerShell中使用.NET将程序集加入全局程序集缓存
    2015-06-06
  • PowerShell 脚本中的密码保存的方法
    PowerShell 脚本中的密码保存的方法
    2017-12-12
  • Powershell 查询 Windows 日志的方法
    Powershell 查询 Windows 日志的方法
    2015-10-10
  • PowerShell中的加法运算详解
    PowerShell中的加法运算详解
    2015-09-09
  • 自动设置安卓手机wifi代理的PowerShell脚本
    自动设置安卓手机wifi代理的PowerShell脚本
    2015-09-09
  • PowerShell基本使用教程
    PowerShell基本使用教程
    2015-09-09
  • PowerShell 指令操作集合(小结)
    PowerShell 指令操作集合(小结)
    2015-09-09
  • 如何利用PowerShell监控Win-Server性能详解
    如何利用PowerShell监控Win-Server性能详解
    2015-09-09
  • 美国设下计谋,用娘炮文化重塑日本,已影响至中国
    美国设下计谋,用娘炮文化重塑日本,已影响至中国
    2021-11-19
  • 时空伴随者是什么意思?时空伴随者介绍
    时空伴随者是什么意思?时空伴随者介绍
    2021-11-09
  • 工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    2021-11-05
  • 2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2021-10-26
  • 电脑版 - 返回首页

    2006-2023 脚本之家 JB51.Net , All Rights Reserved.
    苏ICP备14036222号