python调用powershell、远程执行bat

简介: python调用本地powershell方法 1、现在准备一个简陋的powershell脚本,功能是测试一个IP列表哪些可以ping通: function test_ping($iplist) { foreach ($myip in $iplist) { ...

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

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

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
    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:\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")

 

 

 

作者: zhoujie
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,不然我担心博客园找你算账
如果您觉得本文对你有帮助,请竖起您的大拇指右下角点推荐,也可以关注我
目录
相关文章
|
2月前
|
Python Windows
python之windows脚本启动bat
python之windows脚本启动bat
|
3月前
|
Ubuntu Linux 测试技术
【Azure Function App】Python Function调用Powershell脚本在Azure上执行失败的案例
【Azure Function App】Python Function调用Powershell脚本在Azure上执行失败的案例
|
3月前
|
缓存 监控 NoSQL
【Azure Redis 缓存】使用Python代码获取Azure Redis的监控指标值 (含Powershell脚本方式)
【Azure Redis 缓存】使用Python代码获取Azure Redis的监控指标值 (含Powershell脚本方式)
|
6月前
|
人工智能 运维 数据处理
PowerShell系列(二):PowerShell和Python之间的差异介绍
【1月更文挑战第4天】目前Python最火的编程语言,完整的生态、丰富的第三方资源库、丰富的社区文档教程,是目前人工智能、算法、数据处理分析等方面它属于最棒的编程语言,当然PowerShell作为微软官方推出的解释性语言,作为系统自动化运维脚本、数据处理分析语言还是非常值得学一学的。想对来说PowerShell目前的就业竞争小很多,未来还是非常有潜力的。
|
编译器 Python Windows
windows下使用bat文件执行python项目
windows下使用bat文件执行python项目
|
数据采集 JSON 搜索推荐
Python 调用Zoomeye搜索接口
钟馗之眼是一个强大的搜索引擎,不同于百度谷歌,它主要收集网络中的主机,服务等信息,国内互联网安全厂商知道创宇开放了他们的海量数据库,对之前沉淀的数据进行了整合、整理,打造了一个名符其实的网络空间搜索引擎ZoomEye,运用Python接口可以灵活的实现数据采集。
273 0
Python 调用Zoomeye搜索接口
|
Java C# 决策智能
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex(下)
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex(下)
|
Java 测试技术 C#
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex(上)
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex(上)
|
NoSQL Redis 开发工具
python调用redis-cell(CL.THROTTLE)
python调用redis-cell(CL.THROTTLE)
244 0
python调用redis-cell(CL.THROTTLE)
|
Linux Python
linux qt 项目中QProcess调用命令行命令执行python脚本
linux qt 项目中QProcess调用命令行命令执行python脚本
linux qt 项目中QProcess调用命令行命令执行python脚本