PowerShell入門教程之PowerShell有什么用?
PowerShell能干什么呢?就像序言中提到的那樣,PowerShell首先是個Shell,定義好了一堆命令與操作系統(tǒng),特別是與文件系統(tǒng)交互,能夠啟動應(yīng)用程序,甚至操縱應(yīng)用程序;第二,PowerShell允許將幾個命令組合起來放到文件里執(zhí)行,實(shí)現(xiàn)文件級的重用,也就是說有腳本的性質(zhì);第三,PowerShell能夠能夠充分利用.Net類型和COM對象,來簡單地與各種系統(tǒng)交互,完成各種復(fù)雜的、自動化的操作。
一、與文件系統(tǒng)交互、運(yùn)行應(yīng)用程序
就像在Dos中一樣,在PowerShell的交互界面上鍵入"dir"并回車,會顯示當(dāng)前文件夾下的子文件夾和文件信息。
PS D:\Projects\Practise\PowerShell> dir
Directory: D:\Projects\Practise\PowerShell
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 1/23/2013 12:35 PM d1
d---- 1/23/2013 12:35 PM d2
-a--- 1/21/2013 8:38 PM 36314 alias.tx
-a--- 1/21/2013 8:32 PM 241530 cmdlets.
-a--- 1/18/2013 10:18 AM 888 errors.t
像這樣的命令很多,比如echo "Hello", cd ..等等。從這里看來它就是一個命令行,實(shí)現(xiàn)了原來命令行的功能。但PowerShell是命令行的加強(qiáng)版嗎,是命令行的超集嗎?這個真不是,以后會專門說這個問題。
就像在命令行里運(yùn)行應(yīng)用程序一樣,可以在PowerShell的交互窗口中運(yùn)行應(yīng)用程序,如下:
PS C:\Users\v-lukez> notepad
PS C:\Users\v-lukez>
如果想更好地控制應(yīng)用程序,可以使用start命令,如下:
PS C:\Users\v-lukez> start notepad -WindowStyle Maximized
PS C:\Users\v-lukez>
以上結(jié)果可以實(shí)現(xiàn)Notepad窗口的最大化。其實(shí)類似的命令還有很多,而且更多的參數(shù)意味著更精細(xì)地控制。
二、創(chuàng)建腳本
任務(wù)的自動化是以程序文件或者可執(zhí)行腳本文件為基礎(chǔ)的,PowerShell也支持將命令列表做成腳本文件來執(zhí)行。以下是Hello.ps1腳本文件的內(nèi)容:
$a = "Hello"
$a
echo $a > a.txt
dir a.txt
Hello.ps1腳本文件的執(zhí)行情況結(jié)果如下:
PS E:\> D:\Projects\Practise\PowerShell\Hello.ps1
Hello
Directory: E:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 1/30/2013 4:56 PM 16 a.txt
你可能發(fā)現(xiàn)了,PowerShell腳本文件是以.PS1為擴(kuò)展名的。以上這個腳本非常簡單:先定義了一個變量,然后輸出這個變量的結(jié)果,再將這個變量的值寫入文件a.txt,最后輸出這個文件的屬性信息。僅從這一點(diǎn)看,PowerShell腳本很像Batch文件。但是實(shí)際上,PowerShell可以做得更多。
PowerShell腳本支持自定義函數(shù),就像我們在編程語言中做得那樣。funcDemo.ps1給出了一個在PowerShell腳本中編寫函數(shù)的示例:
#funcDemo.ps1
function SayHello ($name)
{
echo "hello $name"
}
SayHello "Luke"
腳本的運(yùn)行結(jié)果是“Hello Luke”。
此外,關(guān)于PowerShell腳本內(nèi)部語句的運(yùn)行順序,這里要做個簡單說明:除了函數(shù)定義,腳本中的命令或者函數(shù)調(diào)用(其實(shí)也相當(dāng)于執(zhí)行命令)會順序執(zhí)行;函數(shù)中的語句只有在函數(shù)被調(diào)用的時候才會被執(zhí)行。
三、利用.Net類型和COM對象
能夠利用.Net類型和COM對象是PowerShell的最大特點(diǎn),這讓PowerShell能夠最大限度的利用現(xiàn)有資源,并且很容易把.Net和COM程序員招徠到自己麾下。
簡單類型:
[int]$a = 10
[String]$b = 10
.Net類型
$Message = new-object Net.Mail.MailMessage("me@source.com","you@destination.com", "Subject", <br> "Here is some email")
COM對象
$myWord = new-object -comobject Word.Application
創(chuàng)建了.Net或者COM的對象以后,就可以利用這些對象的屬性和方法,來完成更加復(fù)雜的操作。
作為本篇結(jié)束,用一句話總結(jié),PowerShell吃得很少,干活很多,是Windows管理員日常必備的工具之一。走過路過,千萬不要錯過啊。。。
相關(guān)文章
PowerShell實(shí)現(xiàn)時間管理小秘書
這篇文章主要介紹了PowerShell實(shí)現(xiàn)時間管理小秘書,本文是一個PowerShell的綜合編程實(shí)例,實(shí)現(xiàn)了一個用來管理時間的功能,需要的朋友可以參考下2015-04-04PowerShell入門教程之Cmd命令與PowerShell命令相互調(diào)用的方法
這篇文章主要介紹了PowerShell入門教程之Cmd命令與PowerShell命令相互調(diào)用的方法,本文講解了在Cmd命令中調(diào)用PowerShell命令、在PowerShell命令中調(diào)用Cmd命令的方法,需要的朋友可以參考下2014-10-10PowerShell入門教程之創(chuàng)建和使用配置文件實(shí)例
這篇文章主要介紹了PowerShell入門教程之創(chuàng)建和使用配置文件實(shí)例,PowerShell的配置文件都是些普通的PowerShell腳本文件,需要的朋友可以參考下2014-10-10Powershell從注冊表中查詢默認(rèn)MAPI客戶端的例子
這篇文章主要介紹了Powershell從注冊表中查詢默認(rèn)MAPI客戶端的例子2014-05-05PowerShell中執(zhí)行Javascript的方法示例
這篇文章主要介紹了PowerShell中執(zhí)行Javascript的方法示例,特殊場景下可能會用到這個技巧,需要的朋友可以參考下2014-07-07Powershell檢查網(wǎng)站響應(yīng)并計(jì)算執(zhí)行時間例子
這篇文章主要介紹了Powershell檢查網(wǎng)站響應(yīng)并計(jì)算執(zhí)行時間例子,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-03-03