代码之家  ›  专栏  ›  技术社区  ›  Dan The Man

在Python中连续运行Powershell命令

  •  1
  • Dan The Man  · 技术社区  · 6 年前

    当前运行在windows上,稍后将在Docker容器上部署它

    1. $secpasswd = ConvertTo-SecureString "password" -AsPlainText -Force
    
    2. $mycreds = New-Object System.Management.Automation.PSCredential ("domain\username", $secpasswd)
    
    3. Enter-PSSession -ComputerName Some-Host-Name -port 5985 -Credential $mycreds
    
    4. sc.exe config "MyNewService" obj="user@domain.local" password= "password"
    

    试着搜索怎么做,只找到了如何运行单个命令

    process1 = subprocess.Popen(["powershell", "My Command"], stdout=subprocess.PIPE);
    
    result = process.communicate()
    

    有什么办法吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Maximilian Burszley    6 年前

    使用 powershell.exe -EncodedCommand 争论。

    [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes(@'
    $secpasswd = ConvertTo-SecureString "password" -AsPlainText -Force
    $mycreds = New-Object System.Management.Automation.PSCredential ("domain\username", $secpasswd)
    Enter-PSSession -ComputerName Some-Host-Name -port 5985 -Credential $mycreds
    sc.exe config "MyNewService" obj="user@domain.local" password= "password"
    '@))
    

    使用powershell执行此输出,并将其添加为参数

    process1 = subprocess.Popen(["powershell", "-EncodedCommand JABzAGUAYwBwAGEAcwBzAHcAZAAgAD0AIABDAG8AbgB2AGUAcgB0AFQAbwAtAFMAZQBjAHUAcgBlAFMAdAByAGkAbgBnACAAIgBwAGEAcwBzAHcAbwByAGQAIgAgAC0AQQBzAFAAbABhAGkAbgBUAGUAeAB0ACAALQBGAG8AcgBjAGUADQAKACQAbQB5AGMAcgBlAGQAcwAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAFAAUwBDAHIAZQBkAGUAbgB0AGkAYQBsACAAKAAiAGQAbwBtAGEAaQBuAFwAdQBzAGUAcgBuAGEAbQBlACIALAAgACQAcwBlAGMAcABhAHMAcwB3AGQAKQANAAoARQBuAHQAZQByAC0AUABTAFMAZQBzAHMAaQBvAG4AIAAtAEMAbwBtAHAAdQB0AGUAcgBOAGEAbQBlACAAUwBvAG0AZQAtAEgAbwBzAHQALQBOAGEAbQBlACAALQBwAG8AcgB0ACAANQA5ADgANQAgAC0AQwByAGUAZABlAG4AdABpAGEAbAAgACQAbQB5AGMAcgBlAGQAcwANAAoAcwBjAC4AZQB4AGUAIABjAG8AbgBmAGkAZwAgACIATQB5AE4AZQB3AFMAZQByAHYAaQBjAGUAIgAgAG8AYgBqAD0AIgB1AHMAZQByAEAAZABvAG0AYQBpAG4ALgBsAG8AYwBhAGwAIgAgAHAAYQBzAHMAdwBvAHIAZAA9ACAAIgBwAGEAcwBzAHcAbwByAGQAIgA="], stdout=subprocess.PIPE);
    
    result = process.communicate()