国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PowerShell > 正文

Python中調用PowerShell、遠程執行bat文件實例

2020-03-26 19:12:22
字體:
來源:轉載
供稿:網友

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策略的權限可能沒有這個問題):

 

Python,調用PowerShell,遠程執行bat文件

 

第二種調用方法可以解決這個方法

 

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

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 富宁县| 上犹县| 江华| 津南区| 安庆市| 磐石市| 葵青区| 峡江县| 称多县| 阳原县| 博白县| 阳东县| 凤庆县| 铁力市| 石渠县| 溆浦县| 赤壁市| 瓦房店市| 繁峙县| 岑巩县| 鲁山县| 陇南市| 泰和县| 米脂县| 海城市| 英德市| 兴山县| 腾冲县| 同心县| 金阳县| 资兴市| 贺州市| 蓬溪县| 佛山市| 商城县| 五大连池市| 合水县| 祁门县| 东兰县| 广东省| 五莲县|