欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PowerShell中调用外部程序和进程操作命令例子

程序员文章站 2022-11-15 18:04:00
学习powershell,我们不指望通过c#编程去搞定所有事情,我们应该记住cmd.exe或者说批处理给我们留下的宝贵财富——通过调用外部程序去解决问题。调用了外部程序,势...

学习powershell,我们不指望通过c#编程去搞定所有事情,我们应该记住cmd.exe或者说批处理给我们留下的宝贵财富——通过调用外部程序去解决问题。调用了外部程序,势必就要对进程进行管理,这就是本文要介绍的。

1、get-process,返回进程。

get-process [-id] ,按pid获取
get-process -name ,按进程名
get-process -inputobject ,传入参数
举例:get-process -name mmc,显示所有mmc的进程。

2、start-process,启动一个进程

语法:start-process -filepath <可执行文件的路径> -argumentlist <参数列表>
说明:在powershell v2.0以上才支持!

3、stop-process,停止一个或多个正在运行的进程。
stop-process [-id] ,停止指定的pid数组的进程
stop-process -name ,停止一组进程名列表
stop-process -inputobject ,停止一个process类型的进程数组里面的所有进程。

如:stop-process -name notepad,这个功能也可以这样实现:
$pro = get-process -name notepad; $pro.kill(); 或 (get-process -name notepad).kill();

windows提供了一个taskkill.exe程序,通过它也可以停止程序:taskkill /f /im java.exe

用这个命令,当我们要结束在cmd.exe里面运行的java.exe时,我们只结束java.exe,这个时候cmd也会被结束。

4、使用点(.)调用ps1或批处理文件(invoke-expression)
语法:.
说明:可以在powershell交互环境中和ps1文件中调用现有的ps1文件,使用点(.)作为调用符。我曾经试过使用invoke-item,好像没有启动得了。
也可以使用invoke-expression(alias为iex)命令来实现,有两种用法:

复制代码 代码如下:

c:\ps>invoke-expression -command "c:\ps-test\testscript.ps1"
c:\ps> "c:\ps-test\testscript.ps1" | invoke-expression

注意:这里可以使用ps1,也可以使用其它可执行的批处理文件,如.cmd、.bat等。

5、以默认打开方式打开文件(invoke-item)
语法:invoke-item <要打开的文件路径>
举例:invoke-item "c:\1.txt" #将使用txt文件的默认打开工具(即记事本)打开c:\1.txt
说明:文件必须存在,否则会报告“该路径不存在”的错误。

6、使用&调用程序
语法:& <可执行文件路径> [<参数列表>]
举例:

复制代码 代码如下:
$execpath="d:\progra~1\flashfxp\flashfxp.exe"
$execargs="-upload ftp://u:p@ip:21 "
$execargs=$execargs+"-remotepath=`"/`" "
$execargs=$execargs+"-localpath=`"d:\123\`" "
& $execpath $execargs.split()

7、使用cmd执行dos内部或外部命令
说明:有很多dos命令被cmdlet的别名占用了,所以如果还像之前一样使用就会发现参数可能不正确了。为了可以与以前批处理里面用法兼容,可以使用cmd /c来调用dos内部或外部命令。
语法:cmd /c
举例:cmd /c del /s /q d:\testdir\testsubdir\*.*