Powershell的一些东东

首先关于运行:

在shell里面运行一个脚本的话,你需要set-executinopolicy设为RemoteSigned。运行一个脚本在shell里面打脚本名即可。

如果是在run里面,就要打powershell-file"路径和脚本文件名",如果你要看到输出信息,那么可以加上-noexit选项。

如果是在schedule里面计划运行,那么和run差不多,在startaprogram之后,打入你在run里面会用的命令行,即可。

基本语法:

保留字:breakcontinuedoelseelseiffilterforforeachfunctionifinlocalprivatereturnswitchuntilwherewhile

数组:定义方法$name="string1","string2","string3"或者[email protected](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 即可

时间: 2024-10-06 09:16:00

Powershell的一些东东的相关文章

JDK8的随笔(01)_Lambda表达式是个神马东东,初尝禁果

Lambda表达式 先写写背景和最基本的东东,泛型加入和各种循环的复杂模式后面再慢慢深入. 需要看JDK8的背景 虽然网上的介绍很多,但是不如自己读一下document后来得正宗. 说一下缘由,突发的这个项目客户貌似是个暴发户,发疯什么都要用最新的,JDK8是否稳定也不管,各种要求最新.Lambda语法全上,各种jdk8最新的东西全往上搞,我靠...WS还有其他的容器是否对8的支持很好也不知道....不过,这也不是坏事,学呗~~~~ 等jdk出到12的时候再回头看看也挺有意思. 本文也是以JDK

C语言判别输入的东东

梗概:现在很多用C语言写出来的作业,都是用户输入后,电脑对应操作的.其实这样有没有漏洞呢? 这样的管理系统,相信大家也不陌生,我们这里不是谈它的功能和怎样实现..我们就谈谈最后一行.[输入序号].其实很简单,switch语句,0-6中用case包括就OK了..最后来个default,一切不就好了吗? 是的,很多人会对着软件提示按..但我假设一下:电脑键盘上那么多按钮,一不小心按了字母怎么办?哈哈..很多人会说:那就default语句执行咯.但事实上是不是呢? 我亲自试了试,吓尿了.你猜怎样?整个

C语言判别输入东东

梗概:现在很多用C语言写出来的作业,都是用户输入后,电脑对应操作的.其实这样有没有漏洞呢? 这样的管理系统,相信大家也不陌生,我们这里不是谈它的功能和怎样实现..我们就谈谈最后一行.[输入序号].其实很简单,switch语句,0-6中用case包括就OK了..最后来个default,一切不就好了吗? 是的,很多人会对着软件提示按..但我假设一下:电脑键盘上那么多按钮,一不小心按了字母怎么办?哈哈..很多人会说:那就default语句执行咯.但事实上是不是呢? 我亲自试了试,吓尿了.你猜怎样?整个

【UVA 1151】 Buy or Build (有某些特别的东东的最小生成树)

[题意] 平面上有n个点(1<=N<=1000),你的任务是让所有n个点连通,为此,你可以新建一些边,费用等于两个端点的欧几里得距离的平方. 另外还有q(0<=q<=8)个套餐,可以购买,如果你购买了第i个套餐,该套餐中的所有结点将变得相互连通,第i个套餐的花费为ci. 求最小花费. Input (1 ≤ n ≤ 1000)  (0 ≤ q ≤ 8). The second integer is the the cost of the subnetwork(not greater

SQLSERVER 里经常看到的CACHE STORES是神马东东?

SQLSERVER 里经常看到的CACHE STORES是神马东东? 当我们在SSMS里执行下面的SQL语句清空SQLSERVER的缓存的时候,我们会在SQL ERRORLOG里看到一些信息 DBCC FREEPROCCACHE 大家可以看到cachestore.object plans.sql plan.bound tress等名词 cachestore flush for the 'Object Plans' cachestore (part of plan cache) cachestor

(转)loff_t *ppos是什么东东

ssize_t generic_file_read(struct file * filp, char * buf, size_t count, loff_t *ppos) 这是一个文件读函数 我们很容易看出输入参数中 filp 是文件 buf 是文件要读到什么地方去,用户buf count是要读多少东西 那么ppos是什么东东,是当前文件的偏移量嘛?? 但是当前文件的偏移量在filp中有定义呀.struct file { struct list_head f_list; struct dentr

一个考试模拟界面——先记录一下下ui上的东东

先上图,有图有真相 要记录的有以下几点: (1)如何给控件widget加背景图片 (2)如何改变控件中的字体大小,如何让界面中字体都改变 (3)如何构造除了这么漂亮的布局呀,这一点上还是很骄傲的!嘿嘿... (4)在python2.7编写出的界面上显示中文 Part1: 还是先写如何布局吧..按照时间顺序来.. 在pyside中,关于layout,已经接触的有:QtGui.QVBoxLayout(竖直向下的),QtGui.QHBoxLayout(横向的),这两天接触到了一个QtGui.QGrid

BEPL是个什么东东

研究团队有个做智能服务组合的,其中用到叫BEPL的东西,因为全称是Business Process Execution Language,译成中文就是商业执行过程语言,这个东东的是整合SOA的一个执行标准语言,其中有那么一个研究叫做BPM,即业务过程管理,专门研究业务过程的.当然这些研究使用的最多的工具就是流程图啊之类的,其中也较多的用到BEPL BEPL有很多实现引擎,大部分是基于java的,因为主导里面有Oracle可能,当然我也发现了了python的一个实现在这里 基于SOA是我企业业务整

笔记:记录两个新接触的东东- required + placeholder

1.1 required="required" 1.2 placeholder 当用户还没有输入值时,输入型控件可能通过placeholder向用户显示描述性说明文字或者提示信息,这在目前网站中很常见,一些JS框架都会提供类似功能,简单的说下在旧版本中常用的解决方案,为输入控件创建一个label,然后通过CSS控制些label的位置使之覆盖在输入控件上面,当label获得焦点时,浏览器会把焦点指向输入控件.不过有了placeholder,新的浏览器就内置了这一功能,其特性值会以浅灰色样

一个祸害我很久的东东——事件过滤器之按键触发

下面这个东东其实很常见,也很实用,平时上网的时候对之经常见,以为很简单,当然弄懂后,其实发现,他确实蛮简单的,但就是这小东西害了我好久好久啊.... 就是在很多页面中,我们按下特定的键就会触发特定的功能,如果是按下按钮的话,其实还蛮简单的,但是,比如当你输入在输入银行卡号的时候,尤其是电话输入的时候,没有界面上的按钮让你按,一般银行是“请输入银行卡号,以#结束”,当然我不知道,银行用的是什么系统,我只是说自己模拟这个功能的时候,发现其实还蛮伤脑筋的... 不多说,先上代码再解释: from Py