基礎知識

1.cmdlet
get-command-CommandTypecmdlet查看所有cmdlet
公共參數:-Verbose,-Debug,-ErrorAction,-ErrorVariable,and-OutVariable.這些參數大多用於一些腳本調試等.
get-helpget-commd
-------------------------------------------------------------
2.函數
function函數名
{
函數體
}
-------------------------------------------------------------
3.腳本
腳本比函數慢,每次都需要編譯
-------------------------------------------------------------
4.別名
Get-Command-CommandTypealias
-------------------------------------------------------------
5.腳本調用
powershell“&'絕對路徑'參數”
-------------------------------------------------------------
6.變量
特殊字符變量名定義加{}
${$$$$}=1
-------------------------------------------------------------
7.賦值和返回
可以把命令賦值給變量
$item=Get-ChildItem

給多個變量同時賦值
$a=$b=$c=123

交換變量的值
$value1,$value2=$value2,$value1

查看正在使用的變量
lsvariable:(後面有:)

查找變量
lsvariable:value*

驗證變量是否存在
Test-Pathvariable:value1

刪除變量
delvariable:value1

專用的變量命令
Clear-Variable,Get-Variable,New-Variable,Remove-Variable,Set-Variable

變量寫保護
New-Variablenum-Value100-Force-Optionreadonly
但是可以通過刪除變量,再重新創建變量更新變量內容
delVariable:\num-Force
Constant常量一旦聲明,不可修改
-------------------------------------------------------------
8.自動化變量(環境變量)
Get-Helpabout_Automatic_variables獲取所有的環境變量

-------------------------------------------------------------
9.通過函數擴展別名
functiontest-conn{Test-Connection-Count2-ComputerName$args}必須使用變量$args

------------------------------------------------------------
10.循環
foreach
foreach-object用於管道命令
#foreach獲取文件每一行信息
$cont=Get-Contentd:\1.txt
foreach($ipin$cont)
{Write-Host$ip}
#foreach-object
Get-Contentd:\1.txt|ForEach-Object{Write-Host$_}

--------------------------------------------------------------
11.條件操作符
-eq:等於
-ne:不等於
-gt:大於
-ge:大於等於
-lt:小於
-le:小於等於
-contains:包含
-notcontains:不包含

比較
"A"-ieq"a"-i忽略大小寫
"A"-ceq"a"-i不能忽略大小寫

求反
-not$a!($a)

布爾運算
and:和
-or:或
-xor:異或
-not:逆

比較數組和集合
-eq匹配數組
-contains驗證一個數組是否存在特定元素
-------------------------------------------------------------
12.Where-Object條件過濾
Get-Process|Where-Object{$_.company-like'*Microsoft*'}|
selectName,Description,Company
別名?

-------------------------------------------------------------
13.PowershellForEach-Object循環
Get-WmiObjectWin32_Service|ForEach-Object{"Name:"+$_.DisplayName,",IsProcessIdmorethan100:"+($_.ProcessId-gt100)}

Get-WmiObjectWin32_Service|ForEach-Object{
if($_.ProcessId-gt3000)
{'{0}({1})'-f$_.DisplayName,$_.ProcessID}
}


-------------------------------------------------------------
14.Powershell別名
查詢別名所指的真實cmdlet命令
Get-Alias-namels
查看可用的別名
diralias:|where{$_.Definition.Startswith("Remove")}
創建自己的別名
Set-Alias-NameEdit-Valuenotepad
刪除自己的別名delalias:Edit
保存自己的別名
``
-------------------------------------------------------------
15.Powershell進行數學運算
常用的加減乘除模(+,-,*,/,%)運算和小括號表達式都支持。
自動識別計算機容量單位,包括KB,MB,GB,TB,PB

-------------------------------------------------------------
16.Powershell快捷鍵
Esc清空當前命令行
Ctrl+左/右方向鍵在單詞之間移動光標
Ctrl+Home刪除光標最左端的所有字符
ALT+F7清除命令的歷史記錄
F4刪除命令行至光標右邊指定字符處

-------------------------------------------------------------
17.PowershellDoWhile循環
do-while()會先執行再去判斷,能保證循環至少執行一次
單獨使用While
continue關鍵字,可是終止當前循環,跳過continue後其它語句,重新下一次循環

PowershellIF-ELSEIF-ELSE

Switch循環
while(1){
$choose=Read-Host'請選擇:'
switch($choose)
{
1{"Beijing"}
2{"Shanghai"}
3{"Tianjin"}
4{"Chongqing"}
}
}

switch($input)
{
{$_-lt10}{"小於10"}
{$_-eq10}{"等於10"}
{$_-gt10}{"大於10"}
}

switch($value)
{
{($_-lt10)-and($_-gt0)}{"小於10"}
10{"等於10"}
{$_-gt10}{"大於10"}
Default{"沒有匹配條件"}
}

switch($value)
{
{$_-lt5}{"小於5";break}
{$_-gt0}{"大於0";break}
{$_-lt100}{"小於100";break}
Default{"沒有匹配條件"}
}

比較字符串
$domain="
www.mossfly.com"
#大小寫敏感
switch-case($domain)
{
"
Www.moSSfly.com"{"Ok1"}
"
www.MOSSFLY.com"{"Ok2"}
"
www.mossfly.com"{"Ok3"}
}
#Ok3

通配符
$domain="
www.mossfly.com"
#使用通配符
switch-wildcard($domain)
{
"*"{"匹配'*'"}
"*.com"{"匹配*.com"}
"*.*.*"{"匹配*.*.*"}
}

正則表達式
$mail="
[email protected]"
#使用通配符
switch-regex($mail)
{
"^www"{"www打頭"}
"com$"{"com結尾"}
"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"{"IP地址"}
}


-------------------------------------------------
Powershell執行文件和腳本

執行vbs,批處理文件
fullpath

執行powershell腳本

Powershell調用入口的優先級
別名函數腳本文件

-------------------------------------------------
Powershell執行外部命令

#遞歸獲取%TEMP%中的所有文件

$files=Get-ChildItem-Recurse$Env:TEMP|Where{!$_.PSIsContainer}

foreach($filein$files)

{

#如果是文本文件,則輸出文件名與文件大小

if($file.Extension.ToLower()-eq".txt")

{

Write-Host$file.Name$file.Length

}

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章