自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

有關(guān)PowerShell腳本你必須知道的十個(gè)基本概念

原創(chuàng)
系統(tǒng) Windows
相對于傳統(tǒng)的命令行工具,PowerShell對很多用戶來說都會顯得非常陌生。PowerShell腳本提供了一個(gè)方便的方法來自動化各種瑣事。本文介紹了關(guān)于PowerShell的一些基本概念,對于PowerShell初學(xué)者,掌握這些概念有助于加深對PowerShell腳本的理解。

【51CTO精選譯文】PowerShell腳本提供了一個(gè)方便的方法來自動化各種瑣事。下面是關(guān)于PowerShell的一些基本概念,對于PowerShell初學(xué)者,掌握這些概念有助于加深對PowerShell腳本的理解。

51CTO推薦專題:Windows中的腳本技術(shù)-Windows Powershell

1、PS1文件

一個(gè)PowerShell腳本其實(shí)就是一個(gè)簡單的文本文件,這個(gè)文件包含了一系列PowerShell命令,每個(gè)命令顯示為獨(dú)立的一行,對于被視為PowerShell腳本的文本文件,它的文件名需要使用.PS1擴(kuò)展。

2、執(zhí)行權(quán)限

為防止惡意腳本的執(zhí)行,PowerShell有一個(gè)執(zhí)行策略,默認(rèn)情況下,這個(gè)執(zhí)行策略被設(shè)為受限的(Restricted),意味著PowerShell腳本無法執(zhí)行,你可以使用下面的cmdlet命令確定當(dāng)前的執(zhí)行策略:

Get-ExecutionPolicy

你可以選擇使用的執(zhí)行策略有:

  1. Restricted - 腳本不能運(yùn)行。
  2. RemoteSigned - 本地創(chuàng)建的腳本可以運(yùn)行,但從網(wǎng)上下載的腳本不能運(yùn)行(除非它們擁有由受信任的發(fā)布者簽署的數(shù)字簽名)。
  3. AllSigned – 僅當(dāng)腳本由受信任的發(fā)布者簽名才能運(yùn)行。
  4. Unrestricted – 腳本執(zhí)行不受限制,不管來自哪里,也不管它們是否有簽名。

你可以使用下面的cmdlet命令設(shè)置PowerShell的執(zhí)行策略:

Set-ExecutionPolicy <policy name>

3、運(yùn)行腳本

如果你想從命令行運(yùn)行一個(gè)可執(zhí)行文件,多年來一個(gè)永恒不變的方法是,在命令行轉(zhuǎn)到該執(zhí)行文件所在的位置,然后鍵入該執(zhí)行文件的名稱,但這個(gè)古老的方法現(xiàn)在卻不能適用于PowerShell可執(zhí)行腳本了。

如果你想執(zhí)行一個(gè)PowerShell腳本,通常必須鍵入完整的路徑和文件名,例如,假設(shè)你要運(yùn)行一個(gè)名為SCRIPT.PS1的腳本,你可以鍵入:

C:\Scripts\Script.ps1

***的例外是,如果PowerShell腳本文件剛好位于你的系統(tǒng)目錄中,那么你可以直接在命令提示符后鍵入腳本文件名即可運(yùn)行,如:

.\Script.ps1

注意前面需要加上.\,這和Linux下執(zhí)行Shell腳本的方法如出一轍。

4、管道

管道的作用是將一個(gè)命令的輸出作為另一個(gè)命令的輸入,兩個(gè)命令(或cmdlet)之間只需要用管道符號(|)連接即可。

為了幫助你了解管道是如何工作的,我們以一個(gè)例子進(jìn)行說明,假設(shè)你想創(chuàng)建運(yùn)行在服務(wù)器上的進(jìn)程列表,并按進(jìn)程的ID號進(jìn)行排序,可以使用Get-Process cmdlet命令獲得進(jìn)程列表,但默認(rèn)情況下列表不會排序,如果將這個(gè)cmdlet命令的輸出用管道輸送給Sort-Object ID命令,進(jìn)程列表將會按進(jìn)程ID號進(jìn)行排序,如:

Get-Process | Sort-Object ID

5、變量

雖然可以使用管道將一個(gè)命令的輸出輸送給另一個(gè)命令,但管道本身也是有限制的,當(dāng)你用管道從一個(gè)命令向另一個(gè)命令傳遞輸出結(jié)果時(shí),輸出結(jié)果立即被使用,但有時(shí)候,你可能需要保存輸出結(jié)果一段時(shí)間,以便以后可以使用(或重用),這個(gè)時(shí)候管道就應(yīng)該下場,輪到變量上場了。

人們很容易將變量想象成一個(gè)倉庫,但在PowerShell中,變量可以保存命令的完整輸出,例如,假設(shè)你想保存服務(wù)器處于運(yùn)行中的進(jìn)程列表,你可以將它賦給一個(gè)變量,如:

$a = Get-Process

在這里,變量被命名為$a,如果你想使用這個(gè)變量,只需要簡單地調(diào)用它的名稱即可,例如,鍵入$a便可在屏幕上打印變量的內(nèi)容。

你可以將多個(gè)用管道連接的命令的最終輸出賦給一個(gè)變量,只需要用一對小括號將命令括起來即可,例如,假設(shè)你想按進(jìn)程ID對運(yùn)行中的進(jìn)程進(jìn)行排序,然后將結(jié)果輸出給一個(gè)變量,你可以使用下面這個(gè)命令:

$a = (Get-Process | Sort-Object ID)

6、@符號

通過使用@符號,你可以將列表內(nèi)容轉(zhuǎn)換成一個(gè)數(shù)組,例如,下面的代碼創(chuàng)建了一個(gè)名為$Procs的變量,它包含多行文本內(nèi)容(一個(gè)數(shù)組):

$procs = @{name="explorer","svchost"}

使用變量時(shí)你也可以使用@符號,為了確保它作為數(shù)組而不是單個(gè)值處理,例如,下面的代碼將在我前面定義的變量上運(yùn)行Get-Process cmdlet命令:

Get-Process @procs

Windows將顯示W(wǎng)indows資源管理器和Svchost使用的所有進(jìn)程,注意變量前使用的@符號,而不是常見的$符號。

7、Split

Split操作符根據(jù)你指定的字符拆分一個(gè)文本字符串,例如,假設(shè)你想將一個(gè)句子拆分成一個(gè)單詞組成的一個(gè)數(shù)組,你可以使用下面的命令做到:

"This is a test" -split " "

拆分后的結(jié)果如下:

This is a test

8、Join

就像Split可以將一個(gè)文本字符串拆分成多塊一樣,Join的操作則是逆向的,將多個(gè)獨(dú)立的塊連接成一個(gè)整體,例如,下面這行代碼將會創(chuàng)建一個(gè)文本字符串,由我的名字和姓氏組成:

"Brien","Posey" -join " "

命令末尾雙引號之間的空格告訴Windows在兩個(gè)文本字符串之間插入一個(gè)空格。

9、斷點(diǎn)

運(yùn)行一個(gè)新創(chuàng)建的PowerShell腳本時(shí),如果腳本有Bug,會遇到意想不到的后果,保護(hù)自己的一個(gè)方法是在腳本的關(guān)鍵位置插入斷點(diǎn),這樣你就可以確保腳本正常運(yùn)行先,然后再處理可能存在的問題。

插入斷點(diǎn)最簡單的方法是根據(jù)行號插入,例如,假設(shè)你要在第10行插入一個(gè)斷點(diǎn),可以使用下面的命令:

New-PSBreakpoint -Script C:\Scripts\Script.ps1 -Line 10

你也可以將斷點(diǎn)綁定到變量上,如果你希望你的腳本任何時(shí)候都可以修改a$的內(nèi)容,可以使用下面的命令:

New-PSBreakpoint -Script C:\scripts\Script.ps1 -variables a

注意,我在變量名后并沒有包括美元符號。

可以和PSBreakpoint一起使用的動詞包括New,Get,Enable,Disable和Remove。

10、Step

調(diào)試一個(gè)腳本時(shí),有時(shí)可能需要逐行運(yùn)行腳本,這時(shí)你可以使用Step-Into cmdlet命令,它會使腳本一行一行地執(zhí)行,不管有沒有設(shè)置斷點(diǎn),如果你想從這種步進(jìn)式運(yùn)行模式退出來,使用Step-Out cmdlet命令即可,但需要注意的是,使用Step-Out cmdlet命令后,斷點(diǎn)仍然有效。

順便說一句,如果你的腳本使用了函數(shù),你可能對Step-Out cmdlet更感興趣,Step-Out的工作方式和Step-Into一樣,不過,如果調(diào)用了一個(gè)函數(shù),Windows不會逐步執(zhí)行,整個(gè)函數(shù)將會一次性執(zhí)行。 

【51CTO.com譯文,轉(zhuǎn)載請注明原文作譯者和出處?!?/p>

原文:10 fundamental concepts for PowerShell scripting

【編輯推薦】

  1. PowerShell與Unix Shell對比:八大實(shí)例
  2. 替代活動目錄管理的PowerShell命令
  3. Windows PowerShell 的新增功能
責(zé)任編輯:yangsai 來源: 51CTO.com
相關(guān)推薦

2011-05-11 15:28:05

2021-09-15 09:20:37

Python函數(shù)代碼

2011-06-13 13:54:18

SEO

2022-06-08 10:42:34

ReduceJavaScript技巧

2023-11-13 08:18:56

2023-12-12 17:46:33

系統(tǒng)kswapd0內(nèi)核

2018-01-31 10:58:27

2023-02-06 16:46:59

JavaScript程序員技巧

2024-12-16 08:11:45

Python系統(tǒng)調(diào)用

2023-05-11 16:29:39

Javascript開發(fā)前端

2010-05-04 08:58:02

.NET

2021-05-26 08:00:00

微服務(wù)開發(fā)求職

2015-07-23 10:37:13

Linux命令

2022-07-26 09:09:23

Python編程語言代碼

2022-06-12 23:43:19

SQL數(shù)據(jù)函數(shù)

2022-03-22 23:18:55

SQL技術(shù)內(nèi)部概念

2024-05-17 16:18:27

2022-10-17 15:33:46

前端開發(fā)數(shù)組

2010-04-19 10:08:46

Oracle視圖

2022-09-27 14:36:57

JavaScrip數(shù)組開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號