码迷,mamicode.com
首页 > 系统相关 > 详细

Powershell的一些东东

时间:2016-07-21 20:13:45      阅读:318      评论:0      收藏:0      [点我收藏+]

标签:schedule   计划   number   信息   拼接   

首先关于运行:

在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("name@contoso.com") 
$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 即可


本文出自 “No Longer Young” 博客,请务必保留此出处http://zxibin.blog.51cto.com/1098877/1828373

Powershell的一些东东

标签:schedule   计划   number   信息   拼接   

原文地址:http://zxibin.blog.51cto.com/1098877/1828373

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!