• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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策略的权限可能没有这个问题):

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

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

    您可能感兴趣的文章:
    • Python下调用Linux的Shell命令的方法
    • 利用Python+Java调用Shell脚本时的死锁陷阱详解
    • 举例讲解Linux系统下Python调用系统Shell的方法
    • python调用shell的方法
    • Python调用shell命令常用方法(4种)
    上一篇:PowerShell实现在多个文件中检索关键字功能
    下一篇:PowerShell操作Excel、CSV详细介绍
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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