Powershell的一些東東

首先關於運行:

在shell裏面運行一個腳本的話,你需要set-executinopolicy設爲RemoteSigned。運行一個腳本在shell裏面打腳本名即可。

如果是在run裏面,就要打powershell-file"路徑和腳本文件名",如果你要看到輸出信息,那麼可以加上-noexit選項。

如果是在schedule裏面計劃運行,那麼和run差不多,在startaprogram之後,打入你在run裏面會用的命令行,即可。


基本語法:

保留字:breakcontinuedoelseelseiffilterforforeachfunctionifinlocalprivatereturnswitchuntilwherewhile

數組:定義方法$name="string1","string2","string3"或者$number=@(1,2,3,4,5)

引用時$name[n]下標從0開始。$name.Count是數組大小

數組可以相加$num1+$num2就是簡單的兩個數組拼接。

數組的長度:$num.length

也可以定義鍵-值對的數組,叫做associativearray。


讀取輸入

$var=Read-Host"question?"var是變量名,引號裏是提示問題。

暫停程序

Start-Sleep-secondsn要等待的秒數

條件判斷

-eq-ne-lt-gt-le-gt

-not!-and-or這是邏輯比較用到的操作符

if(condition){}

elseif(condition){}

...

else{}

以及switch

switch(expression)
{
{test}{codeblock}
value{codeblock}
default{codeblock}
}value是指和expression比較的值


while循環

while(表達式){

...

}

或者

do{

}while(表達式)

表達式可以是$var-eq"";$var-ne"";(表達式1)-and(表達式2)-and(表達式3)

for循環

for(初始化;表達式;STEP){}以及

foreach($name1inCollection1){$name1相關代碼....}


返回的集合的處理

get-childitem|Select-Objectpropname1,propname2,propname3

其他有sort-Object;Where-Object;

如get-childitem|sort-object|Where-Object{$_.Length-gt200}這裏$_代表集合裏當前成員。


定義函數

functionfuncname{...}

funcitonfuncname($x,$y,$z){...}


導入導出CSV文件

export-csvPAth\filname.csv

$csvfil=import-csvPath\filname.csv


***系統管理的一些例子:

獲取USB設備

gwmiWin32_USBControllerDevice-computernameSERVER1|flAntecedent,Dependent

要知道有多少USB設備

$USBdev=gwmiWin32_USBControllerDevice

write$USBdev.length

中止一個進程:stop-process-idnnnn


輸出顯示的慢一點:

定義一個函數

functionEasyView{process{$_;Start-Sleep-seconds.5}}

然後,對於輸出很多行的命令,

Get-ChildItemN:Data|EasyView


把電腦加入域:

# Acquire credentials for a domain account that has permission to join
$admin = Get-Credential

# these two variables are for convenience in shortening the command line
$user = $admin.UserName
$pw = $admin.GetNetworkCredential().Password

$CS = Get-WmiObject Win32_ComputerSystem
$CS.JoinDomainOrWorkgroup("DOMAIN",$pw,$user,$null,3)


***用於Exchange的命令

獲得郵箱的統計報告,並排序

Get-MailboxStatistics–ServerVAN-EX1|Sort-ObjectTotalItemSize–Descending|
FTDisplayName,TotalItemSize,ItemCount

如果只要顯示開頭5個

Get-MailboxStatistics–ServerVAN-EX1|Sort-ObjectItemCount–Descending|Select-
Object–First5|FTDisplayName,ItemCount

如果要生成一個證書請求並保存爲文件

$Data1=New-ExchangeCertificate-GenerateRequest-FriendlyName"Internetcertificate
forVAN-EX2"-SubjectName"DC=com,DC=Adatum,CN=VAN-EX2.adatum.com"-DomainNamemail
.adatum.com
Set-Content-Path"C:\Certificates\VAN-EX2-request.req"-Value$Data1

注意:Set-Content是吧某個文件的內容替換,Add-Content是添加在後面。

管理活動目錄裏的對象

首先你要import-module ActiveDirectory

創建一個用戶, New-ADuser  -samAccountName 參數是登錄用名

-GivenName  -Surname -AcountPassword 這些都是必要的參數

在創建用戶的時候要看看同登錄名的用戶是不是已經存在:

$exuser = get-ADuser -Filter {SamAccountName -eq $SAM}
if ($exuser -eq $Null)
{ $create = New-ADuser -Name $Detailname -Givenname $firstname -Surname $lastname -SamaccountName $SAM -UserPrincipalName $UPN -AccountPassword (ConvertTo-SecureString $password -AsPlainText -Force) -Enabled $true -Path $OU -Company $company -Department $dept
}
else {
echo "The user with samaccount "  $SAM " already exist, please create it maually."
Break
}
echo "account created OK."

發送郵件

$outlook = new-object -ComObject Outlook.Application 

$mail = $outlook.CreateItem(0) 
# 這裏0代表olMailItem類型, 
$subject = "New User Information " 
$mail.Recipients.Add("[email protected]") 
$mail.subject = $subject 
$mail.body = ("Hello All," + "`r`n" + "`r`n" + "New User Information" + "`r`n" + "First Name :" + "  " + $UserFirstname + "`r`n" + "Last Name :" + "  " + $lastname +"`r`n" + "Contoso ID# :" + "  " + $ID + "`r`n" + "Position :" + " " + $title + "`r`n" + "AD Account Created" + "`r`n"  )  
$mail.Send()

這個腳本運行時,outlook會反覆彈出確認授權執行的提示,按照微軟網站設了組策略,仍然是這樣,不知道有誰知道怎麼才能去掉彈出對話框。

系統啓動時執行power shell的腳本。

這個可以設置註冊表。

$powershell = (Join-Path $env:windir "system32\WindowsPowerShell\v1.0\powershell.exe")

$RunKey ="HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"

$itemName = "MyAutorun"

set-ItemProperty -path $RunKey -name $itemName -value ($powershell  腳本路徑名和參數)

如果不要自動運行了,

remove-ItemProperty -path $RunKey -name $itemName 即可


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