GVKun编程网logo

从Python脚本运行PowerShell函数(python调用powershell脚本)

13

对于想了解从Python脚本运行PowerShell函数的读者,本文将是一篇不可错过的文章,我们将详细介绍python调用powershell脚本,并且为您提供关于GPO运行PowerShell启动脚

对于想了解从Python脚本运行PowerShell函数的读者,本文将是一篇不可错过的文章,我们将详细介绍python调用powershell脚本,并且为您提供关于GPO运行PowerShell启动脚本,无需等待、PowerShell 脚本打开一个新的 PowerShell 窗口并运行命令、PowerShell入门教程之远程操作运行PowerShell的方法、powershell脚本运行准备的有价值信息。

本文目录一览:

从Python脚本运行PowerShell函数(python调用powershell脚本)

从Python脚本运行PowerShell函数(python调用powershell脚本)

我需要从Python脚本运行PowerShell函数。.ps1和.py文件当前都位于同一目录中。我要调用的函数在PowerShell脚本中。我看到的大多数答案都是关于从Python运行整个PowerShell脚本的。在这种情况下,我试图在Python脚本的PowerShell脚本中运行单个功能。

这是示例PowerShell脚本:

# sample PowerShellFunction hello{    Write-Host "Hi from the hello function : )"}Function bye{    Write-Host "Goodbye"}Write-Host "PowerShell sample says hello."

和Python脚本:

import argparseimport subprocess as spparser = argparse.ArgumentParser(description=''Sample call to PowerShell function from Python'')parser.add_argument(''--functionToCall'', metavar=''-f'', default=''hello'', help=''Specify function to run'')args = parser.parse_args()psResult = sp.Popen([r''C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe'',''-ExecutionPolicy'',''Unrestricted'',''. ./samplePowerShell'',args.functionToCall],stdout = sp.PIPE,stderr = sp.PIPE)output, error = psResult.communicate()rc = psResult.returncodeprint "Return code given to Python script is: " + str(rc)print "\n\nstdout:\n\n" + str(output)print "\n\nstderr: " + str(error)

因此,我想以某种方式运行PowerShell示例中的“ hello()”或“ bye()”函数。知道如何将参数传递给函数也很高兴。谢谢!

答案1

小编典典

您需要两件事:点源脚本(据我所知)(类似于python的import)和subprocess.call。

import subprocesssubprocess.call(["C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe", ". \"./SamplePowershell\";", "&hello"])

因此,这里发生的是我们启动powershell,告诉它导入脚本,并使用分号结束该语句。然后,我们可以执行更多命令,即hello。

您还想向函数中添加参数,因此让我们使用上一篇文章中的参数(稍作修改):

Function addOne($intIN){    Write-Host ($intIN + 1)}

然后只要Powershell可以处理该输入,就可以使用所需的任何参数调用该函数。因此,我们将上述python修改为:

import subprocesssubprocess.call(["C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe", ". \"./SamplePowershell\";", "&addOne(10)"])

这给了我输出:

PowerShell sample says hello.11

GPO运行PowerShell启动脚本,无需等待

GPO运行PowerShell启动脚本,无需等待

我试图为我的Windows域中的PC设置一个PowerShell启动脚本。 该脚本需要大约20秒来完成,我不想让引导过程等到它完成。 我设置它像这篇文章中所述http://technet.microsoft.com/en-us/magazine/dd630947.aspx另外我设置GPO选项运行启动脚本asynchronosly在此处http://msdn.microsoft descrbed 。 com / en-us / library / ms811602.aspx但引导过程仍然比不使用脚本需要20秒。 任何提示如何解决这个问题?

EC2 linux实例启动时启动一个程序

修改/设置initramfs脚本中的根设备

initrd和引导Linux内核

在Windowslogin窗口之前启动批处理脚本

在Linux中查找login时间

关于启动脚本的事情是,你可以保证它在任何人登录之前运行,所以延迟将在那里。 异步处理的功能是同时启用多个启动脚本,但是在登录之前必须完成所有脚本。

自动取款机。 我有两个可能的解决方案:

将脚本更改为登录脚本。 这几乎只是移动延迟,但是您可以在桌面加载期间/之后运行脚本。

有一个启动脚本,安排您的“真正的”启动脚本运行前。 1分钟后创建。 at.exe / schtasks.exe将成功创建您的任务,您将能够登录。 然后您的脚本将被执行后, 在后台1分钟。

总结

以上是小编为你收集整理的GPO运行PowerShell启动脚本,无需等待全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

PowerShell 脚本打开一个新的 PowerShell 窗口并运行命令

PowerShell 脚本打开一个新的 PowerShell 窗口并运行命令

试试这个命令

Start-Process powershell.exe -ArgumentList "-noexit"  



 Start-Process powershell -ArgumentList "-noexit","-noprofile","-command &{Get-Location}"

启动窗口最大化我们的参数-WindowStyle Maximized

提供更多代码以获取更多信息

PowerShell入门教程之远程操作运行PowerShell的方法

PowerShell入门教程之远程操作运行PowerShell的方法

PowerShell远程操作是远程管理的基础,它为集中管理分布式系统提供了又一种可靠、高效的方法。

  一般来说PowerShell远程操作依赖于远程处理基础结构,但为数不多的几个自身具有远程处理能力的命令除外,如Get-Service、Get-Process、Get-WMIObject、Get-EventLog和Get-WinEvent等。(不难看出,这些命令都是“读取”系统的某些方面的信息,不做更改。它们依赖.Net Framework完成远程操作。)

配置远程基础结构

  远程基础结构是远程操作的基础,正确设置远程基础结构才能使远程命令正确执行。好在远程基础结构虽然重要,但是配置起来非常简单。实际上,只要设置好以下两点就可以进行远程操作了:

  1、以管理员身份运行。要进行远程操作,必须以管理员身份启动PowerShell命令行,即使当前用户是系统管理员也要如此。

  2、启用远程处理模式。启用远程处理模式之后,依赖远程基础结构的命令才能正确执行。启用远程处理模式请使用enable-psremoting命令。有的系统默认已经开启了远程处理模式,检查远程处理模式是否启动,可以执行new-pssession命令。如果新的会话成功创建,则说明远程模式启动,远程基础结构配置成功。

执行远程操作

  配置好远程基础结构,就可以执行远程操作了。远程操作主要依赖几个Session(会话)命令和Invoke-Command命令来进行。常见的使用情况有三种场景:

  场景一:远程交互式会话

  这个场景一般用于手动进行远程操作,输入命令,查看结果。方法很简单。进入交互式会话的命令是Enter-PSSession,退出时键入Exit-PSSession或者exit都可以。远程交互式操作期间,输入的命令在远程计算机上运行,就像直接在远程计算机上输入并执行这些命令一样。期间所定义的变量和命令的执行结果在退出交互式会话之后不再可用。

  场景二:脚本块、脚本文件的一次性执行

  这种场景,是在本地计算机与远程计算机上建立一个临时会话。将脚本块或者脚本文件的内容发送到远程计算机执行,并将结果发回本地计算机。这种方法执行效率很高,是PowerShell推荐的执行远程命令的方法。除非需要在会话中共享数据,否则建议使用该方法。

  场景三:脚本块、脚本文件在命名会话中执行

  这种场景是最复杂的,也是功能最强大的。会话会保持所有定义的变量、函数和脚本,导入的模块和管理单元,有利于共享数据。使用方法如下:

  1、定义会话: 请使用new-pssession命令定义会话,如$session1 = new-pssession –computer server1。(如果必要请使用Credential参数。)

  2、在会话中远程执行脚本(或者脚本文件): 请使用Invoke-Command命令执行远程脚本,如Invoke-Command -Session $session1 -ScriptBlock {dir c:\}或者Invoke-Command -Session $session1 -FilePath .\dirDriveC.ps1

  3、获得结果: 可以将执行结果赋于变量,如$sub = Invoke-Command -Session $session1 -ScriptBlock {dir c:\}或者$sub = Invoke-Command -Session $session1 -FilePath .\dirDriveC.ps1

  后续命令可参照步骤2或者3继续执行,所有执行的命令就好像在同一个上下文中执行一样。

结语

  网络时代的Shell或者脚本语言必须具有很强的网络处理能力,PowerShell就是这样的语言。微软的产品一般来说将安全性看得很重,所以PowerShell在网络处理方面有诸多限制。比如PowerShell不能在远程机器上显示界面,即使是有界面的程序,也只能在后台运行。熊掌和鱼肉不可兼得,好在我们总能找到一些解决办法。比如上述问题可以借助微软的PsExec工具来实现,详细信息见Windows Sysinternals.

您可能感兴趣的文章:
  • PowerShell远程安装MSI安装包、EXE可执行程序的方法
  • PowerShell小技巧之启动远程桌面连接
  • PowerShell小技巧之添加远程防火墙规则
  • Powershell小技巧--远程对比服务配置
  • Powershell小技巧之非相同域或信任域也能远程
  • Powershell小技巧之开启关闭远程连接
  • 使用HTTP api简单的远程执行PowerShell脚本

powershell脚本运行准备

powershell脚本运行准备

1312321321321321321

关于从Python脚本运行PowerShell函数python调用powershell脚本的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于GPO运行PowerShell启动脚本,无需等待、PowerShell 脚本打开一个新的 PowerShell 窗口并运行命令、PowerShell入门教程之远程操作运行PowerShell的方法、powershell脚本运行准备等相关知识的信息别忘了在本站进行查找喔。

本文标签: