[Windows PowerShell03]-PowerShell面向对象

来源:互联网 发布:淘宝淘口令在线生成 编辑:程序博客网 时间:2024/06/06 17:58

         PowerShell作为服务器管理利器,对于进程的管理自然是做得很到位的,很自然地我们能想到如何获取服务器的所有进程。

         

         我们在PowerShell脚本环境下执行gps命令(gps命令是Get-Process命令的Alias)我们可以得到进行的一些信息,进程的句柄,CPU累计运行时间,进程ID等等。

         在DOS环境下我们可以用notepad命令启动记事本,这里我们也可以这样做。使用notepad命令同样可以启动记事本,这个不是重点,我们想查看记事本的进程改如何做呢?我们可以通过以下命令来做。


可以看到Notepad命令进程的一些情况,下面我们来说说PowerShell面向对象的事情。

这里的$Process变量的值就是获取到的Notepad的进程的实例,这样的话变量代表了这个对象,为什么我们说这是一个对象呢,我们通过Get-Member可以获取对象的属性、事件及方法,这是对象的典型特征。

PS C:\Users\Administrator> $process.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                                  --------
True     False    Process                                  System.ComponentModel.Component

通过GetType我们可以看出这个对象的类型是System.ComponentModel.Component,跟.net的对象是一样的。

 $process.Kill()可以杀死进程, 我们发现调用Kill方法的形式和.net的C#都是一样的。

能够更好地说明面向对象的特性的例子如下:

Add-Type -AssemblyName System.Windows.Forms
$form = New-Object Windows.Forms.Form  
$form.Text = "My First Form"
$button = New-Object Windows.Forms.Button
$button.text="Push Me!"
$button.Dock="fill"
$button.add_click({$form.close()})
$form.controls.add($button)
$form.Add_Shown({$form.Activate()})
$form.ShowDialog()

这个是不是和C#的代码非常像,是的,这个其实就是一个Winform的窗体,在PowerShell下执行的效果如下


所以,PowerShell里是可以写C# code的。

         

0 0
原创粉丝点击