中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: powershell学习笔记一:基础知识 上一主题 | 下一主题
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『楼 主』:  powershell学习笔记一:基础知识

http://myolivine.blogcn.com/diary,23490130.shtml
希望大家经常访问和更改我的错误.

2009-2-25 10:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『第 2 楼』:  

哎!没人捧场啊!

2009-2-25 23:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『第 3 楼』:  

请大家来捧捧场吧!
http://myolivine.blogcn.com/diary,23490130.shtml
会有收获的!错的地方请大家及时告诉我.

部分命令学习笔记:
http://myolivine.blogcn.com/diary,23490130.shtml

新建目录(文件):new-item c:\tempdirectory(c:\test.txt)  -type  directory(file)
测试目录(文件)是否存在:test-path c:\tempdirecory(c:\test.txt)
测试目录下是否存在某类型文件:test-path  c:\temp\*.txt  
仅列出目录:get-childitem  c:\temp  -recurse | where-object {$_.mode –match “d”}
?仅列出目录下的文件呢? Answer:     -notmatch  “d”
列出(排除)指定目录下的某类型(如.txt,.tmp)文件,并仅显示前(后)20个文件的名和长度:get-childitem  c:\temp  -include(exclude) *.txt,*.tmp | select-object  name,length –first(last)  20,显示所有属性用“ *  ”。
按扩展名统计某类型文件个数:get-childitem c:\music  -recurse  -include *.mp3 | group-object expansion(extension),注意,如果没有加上-recurse,执行竟然没有任何反应,但也不提示出错,可*.mp3文件确实就在c:\music下啊?按扩展名统计用 extension或expansion都可以。
按年月日统计文件个数:get-childitem c:\music –recurse | group-object {$_.creationtime.year},{$_.creationtime.month},{$_.creationtime.day}
统计目录文件总的大小,平均大小,最大和最小值:get-childitem c:\music –recurse –include *.mp3 | measure-object length –sum –average –maximum -minimum
改变当前目录(假设当前目录非C:\):set-location  c:\
统计总的长度,其它项不计:get-childitem c:\music –recurse –include *.mp3 | measure-object length –sum
仅统计总的长度:(get-childitem c:\music –recurse –include *.mp3 | measure-object length –sum).sum
删除大于1M的文件:get-childitem c:\music -recurse | where-object {$_.length -gt 1MB} | foreach-object {remove-item $_.fullname},注意,powershell识别KB,MB,GB。
获得当前目录:get-location
查看日志:get-event  application(system  security)
查看服务并按name和canpauseandstop属性输出:get-service | format-list  -property  name,canpauseandstop
查看对象的属性和方法:get-childitem c:\test | get-member,记住方法加 (),属性没有。
获得所有参数(或某个totalcount)帮助信息:get-help get-command –parameter *(totalcount)
查看特定的进程(服务)信息:get-wmiobject -query "select * from win32_process where name='notepad.exe’”,注意在word里拷贝该语句是“单双引号”的不同,最好在Shell下直接书写,”select中的select与”没有空格。查询服务将win32_process换成win32_service.常用的还有win32_bios等。例:get-wimobject win32_process  -computer 127.0.0.1
新建驱动器(如注册表驱动器):new-psdrive  -name zgk  -psprovider registry  -root hkcu\software\microsoft,注意不是hkcu:softwaremicrosoft,驱动器只能在powershell中使用,在“我的电脑”里是看不到powershell的驱动器的。获取powershell所有的驱动器类型命令是:get-psdrive。查看注册表驱动器会显示 SVC和VC,SVC代表“子项记数,即所查看项下有多少个子项”;VC代表“值项记数,即所查看项下有多少个值,不包括空值”。
获取文本内容(并送到指定文本中):get-content  c:\test.txt | out-file(用 > 替代)  c:\test1.txt
将命令结果输出到屏幕同时在保存到指定文件中:get-childitem c:\temp –recurse | tee-object c:\test1.txt
根据文件扩展名自动创建文件夹: get-childitem c:temp | select-object extension | sort-object extension -unique | foreach-object {new-item ("c:restored"+$_.extension) -type directory}
根据文件扩展名移动文件:get-childitem c:restored | where-object {$_.mode -notmatch "d"} | foreach-object {$b = "c:restored" + $_.extension; move-item $_.fullname $b}
批量修改文件名(如某目录下有1 sp sp.txt类似文件,要用_代替空格):ls | % { rename-item $_ ($_name –replace “ “,”_”) },注意$_ 与($_name –replace “ “,”_”)之间的空格
修改属性值(把c:\test及其子目录中所有文件的LastWriteTime属性都改为一致):
get-childitem c:\test -recurse | foreach-object {$b=get-date; $_.lastwritetime = $b},如果想修改其它属性呢?

定义一个函数:function  test {notepad.exe  c:\test.txt}
Write cmdlet:主要用于输出调试信息,输出错误对象,输出进度条等。
例:输出信息,黑底红字
Write-host  -foregroundcolor  red  -backgroundcolor  black “mynameiszgk”
例:输出进度条
for ($i = 0; $i -lt 100; $i++) { Write-Progress -Activity "Learning PowerShell" -Status "Percentage: $i" -PercentComplete $i; Start-Sleep -Milliseconds 50 }
#-activity  “Learning PowerShell” 进度条名称
#-status 整个过程中当前的状态
#-PercentComplete $i进度条具体执行过程
# Start-Sleep -Milliseconds 50   50毫秒延迟
。about_alias.help命令
help  *-alias:获得所有关于alias的命令
get-alias:获得所有别名与真实命令对应的列表。例get-alias  r* 获得以r开头的alias
get-alias | where-object {$_.definition –eq “remove-item”}:获得remove-item cmdlet对应的所
有别名
alias:   :代表别名驱动器
set-location alias:     :进入别名驱动器,之后可以用get-childitem查看alias:下的内容,可以用get-childitem –path  alias:  代替上述操作。Get-childitem –path alias:r*表示获得以r打头的别名
get-alias | get-member:获得alias的属性和方法,例get-alias –name zgk | get-member –membertype  property  (method)表示获得别名为zgk的属性(或方法)
set-alias:设置或修改别名,例set-alias –name zgk –value get-childitem,该命令可用new-alias代替,即new-alias –name zgk –value get-childitem,注意,如果不写-name和-value参数,也可以新建立alias,不出错,但不能正确执行。
可以为cmdlet,function,script,file,executable file建立文件,但不能为带参数的cmdlet建立alias,例不能为get-eventlog  -logname application建立alias,可建立函数来表示它,function  viewlog {get-eventlog –logname application}再运行viewlog来查看结果。可通过help about_function来了解function。
set-alias  -name zgknote  -value “c:\windows\nontpad.exe” 为notepad.exe 建立别名。
help  get-alias –detail(detailed)  -full  -examples :获得get-alias cmdlet的详细帮助,这些参数是通用参数,适用于其它的cmdlet,以后不在赘述。
new-alias  -name zgkps1  -value  “c:\test.ps1” :为test.ps1建立alias。
。about_arithmetic_operators.help
precedence(优先级) :1(for a negative number);2* / %3+ -(for subtraction)。其中/是除法;%是取模,例8%3,结果是2。
Help  about_assignment_operators :获得关于operators的帮助
。about_assignment_operators.help
包括:=  +=  -=  *=  /=  %=
$a=2;$a=”I”,”and””you”:常规赋值方法。
$a=3.257e3:指数赋值;$a=10kb会被自动转换成bytes。
$a+=1相当于$a=($a+1);$a-=1相当于$a=($a-1)
$a=1,2,3则$a[2]-=1相当于最后一个元素减1,$a的值由1,2,3变成1,2,2
$a=6,则$a+=”3”后$a值为9。
$a=”6”,则$a+=3后$a值为”63”
[string]$a=27相当于$a=[string]27
[string[]]$a=”a”,”b”,”c”
[system.datetime]$a=”1/30/2000}
$varA,$varB,$varC=1,2,3则$varA=1, $varB=2, $varC=1,按照1对1原则。
$varD=1,2,3,则$varA,$varB,$varc=$varD,则$varA=1;$varB=2;$varC=3,还是1对1原则。
$varA=$varB=$varc=$varD,则它们的值都是1,2,3
$varA,$varB,$varC=1,2,3,4,5则$varA=1, $varB=2, $varC=3,4,5。注意,如果值比变量个数多,原则还是1对1,多出来的值全部赋值给最后1个变量。
Set-variable  -name  varA  -value 1,2,3:还可以使用set-variable命令为变量赋值。
$a=@{one=1;two=2;three=3}:$a是1个数组,值是1,2,3。并且每个值都对应1个Key,$a.one对应的是1,依次类推,语法是<array>.<key>。
注意:在PowrShell输入十六进制会被自动转换成十进制。
-=和/= assignment operators不能用于“字符串变量”
。about_array.help
数组是一个数据结构,频繁的读写数组会使脚本执行缓慢。
$zgk=1,2,3,4,5,6,7,8,9和$zgk=1..9 是定义数组的2种方法
$zgk或$zgk[2]:读取$zgk的所有元素或读取第3个element。如果数组有5个elements,它的索引长度是4,即$zgk[0]到$zgk[4]。
$zgk[0..8]:按顺序从$zgk[0]到$zgk[8]读取$zgk的值, 分别是1,2..7,8,9
$zgk[-1..-9]: 按降序从$zgk[-1]到$zgk[-9]读取$zgk的值,分别是9,8,7..2,1
$zgk[-9..-1]: 按升序从$zgk[-9]到$zgk[-1]读取$zgk的值,分别是1,2..7,8,9
$zgk[0,2+4..6]:分别显示$z[0], $z[2], $z[4], $z[5], $z[6],分别是1,3,5,6,7
$zgk[0..($zgk.length-1)]:相当于$zgk[0..8]
Foreach ($element in $zgk) {$element}:用foreach显示$zgk中的每1个元素,注意第1个是圆括号(  ),第2个是花括号{  }
For ($i=0;$i –le ($zgk.length-1);$i+=2) {$zgk[$i]} :用for读取数组的第1,3,5,7,9个元素。注意别忘了为$i赋初始值。
$i=0;while ($i –le ($zgk.length-1)) {$zgk[$i];$i++}:用while读取数组$zgk的所有元素。
$zgk.gettype()如果不知道数组类型,可通过gettype()方法查看。
[ini32[]]$zgk=100,200,300:创建包含3个整数的32-bit的integar array(整形数组)。
[diagnostics.process[]]$zgk=get-process:创建一个支持.NET Framework的任意类型
Get-member  -inputobject  $zgk:利用-inputobject获取$zgk的所有属性和方法。
$zgk[0]=100:将$zgk的第1个数组的值由1改为100。
$zgk.setvalue(200,1):利用setvalue() 方法将第1个数组的值由100改为200。
$zgk +=300:在数组末段添加一个新的元素300。则$zgk现在是1,200,3,..7,8,9,300
两个数组合并:$a=1,2;$b=3,4则$c=$a+$b,所有$c的数组成员是1,2,3,4.
删掉1个数组(把数组当作1个变量):remove-item  variable:zgk,记住不用写$了。
获得有关array信息命令:help about_associative_array;help about_assignment_operators;help about_operator;help about_for;help about_foreach;help about_while。
2009-2-24补(马涛)
可以把某个命令的值赋给变量,在以数组的方式读取,很有意思:
$test=dir   ;   $test[4]
。about_associative_array.help
所谓associative array,可以把它理解为key与value对应的数组。
语法:$<array name>=@{<key1>=value1;<key2>=value2;...}。注意associative array是以@为标记的。例$a=@{"zhangsan"="1/2/2007";"lishi"="1/30/2007";"wangwu"="1/25/2007"},key和value尽量用单或双引号隔离。
$a.”zhangsan”相当于$a[“zhangsan”]都是读取key为zhangsan对应的value。
$a.gettype()表示获得$a的类型。
$a.”zhangsan”.gettype()相当于$a[”zhangsan”].gettype()都是获取key为zhangsan的类型。
$a=@{"zhangsan"="1/2/2007";"lishi"=0459;"wangwu"=get-process}当然可以在1个$a下为key赋不同类型的value。
。about_automatic_variables.help
所谓automatic_variables就是系统定义好了的变量,可以直接使用。
$$`        Contains the last token of the last line received by the shell.
$?        Contains True if last operation succeeded and False otherwise.
$^        Contains the first token of the last line received by the shell.
$_        Contains the current pipeline object, used in script blocks, filters, and the where statement.
$Args        Contains an array of the parameters passed to a function.
$DebugPreference        Specifies the action to take when data is written using Write-Debug in a script or WriteDebug in a cmdlet or provider.
$Error        Contains objects for which an error occurred while being processed in a cmdlet.
$ErrorActionPreference        Specifies the action to take when data is written using Write-Error in a script or WriteError in a cmdlet or provider.
$foreach        Refers to the enumerator in a foreach loop.
$Home        Specifies the user's home directory. Equivalent of %homedrive%%homepath%.
$Input        Use in script blocks that are in the middle of a pipeline.
$LASTEXITCODE        Contains the exit code of the last Win32 executable execution.
$MaximumAliasCount        Contains the maximum number of aliases available to the session.
$MaximumDriveCount        Contains the maximum number of drives available, excluding those provided by the underlying operating system.
$MaximumFunctionCount        Contains the maximum number of functions available to the session.
$MaximumHistoryCount        Specifies the maximum number of entries saved in the command history.
$MaximumVariableCount        Contains the maximum number of variables available to the session.
$PsHome        The directory where the Windows PowerShell is installed.
$Host        Contains information about the current host.
$OFS        Output Field Separator, used when converting an array to a string. By default, this is set to the space character. The following example illustrates the default setting and setting OFS to a different value:

&amp;{ $a = 1,2,3; "$a"}
1 2 3
&amp;{ $OFS="-"; $a = 1,2,3; "$a"}
1-2-3

$ReportErrorShowExceptionClass        When set to TRUE, shows the class names of displayed exceptions.
$ReportErrorShowInnerException        When set to TRUE, shows the chain of inner exceptions. The display of each exception is governed by the same options as the root Exception, that is, the options dictated by $ReportErrorShow* will be used to display each exception.
$ReportErrorShowSource        When set to TRUE, shows the assembly names of displayed exceptions.
$ReportErrorShowStackTrace        When set to TRUE, emits the stack traces of exceptions.
$ShouldProcessPreference        Specifies the action to take when ShouldProcess is used in a cmdlet.
$ShouldProcessReturnPreference        Value returned by ShouldPolicy
$StackTrace        Contains detailed stack trace information about the last error.
$VerbosePreference        Specifies the action to take when data is written using Write-Verbose in a script or WriteVerbose in a cmdlet or provider.
$WarningPreference        Specifies the action to take when data is written using Write-Warning in a script or WriteWarning in a cmdlet or provider.
。about_break.help
代码段1:
$loveword="i love you yhh"
$num=0
$varB=10,20,30,40
foreach ($vaL in $varB)
{
$num++
if ($vaL -eq 30)
{
break
}
Write-Host "当到$var1=30时,屏幕输出$num 次 $loveword"
}
注意:该代码段中的foreach不能用for代替
代码段2:
for ($i=0;$i –le 9;$i++)
{
Write-host “$i”
Break
}
代码段3:
。about_command_search.help
在PowerShell下执行任何命令都必须指明详细的路径,否则将在当前目录下寻找匹配的alias,fucntion或在默认的环境变量路径下寻找匹配的命令,找不到则提示命令不被识别。
。about_command_syntax.help
单个命令语法:<command_name> [parameter]…
多个命令应用:<command_name>[parameter]… | <command_name> [parameter]…
有一种参数被称做“positional parameter”(位置参数),可omit(省略),例:get-childitem –path c:\test,其中-path就是positional parameter,可改写为get-childitem c:\test。
。about_commonparameters.help
commonparameters(通用参数):所有命令都支持的参数是commonparameters,在一些命令中执行commonparameters可能没有什么效果。
Parameter          Description
Verbose        Boolean. Generates detailed information about the operation, much like tracing or a transaction log. This parameter is effective only in cmdlets that generate verbose data.
Debug          Boolean. Generates programmer-level detail about the operation. This parameter is effective only in cmdlets that generate debug data.
ErrorAction        Enum. Determines how the cmdlet responds when an error occurs. Values are: Continue [default], Stop, SilentlyContinue, Inquire.
ErrorVariable          String. Specifies a variable that stores errors from the command during processing. This variable is populated in addition to $error.
OutVariable        String. Specifies a variable that stores output from the command during processing.
OutBuffer          Int32. Determines the number of objects to buffer before calling the next cmdlet in the pipeline.
WhatIf        Boolean. Explains what will happen if the command is executed, without actually executing the command.
Confirm        Boolean. Prompts the user for permission before performing any action that modifies the system.
其中,WhatIf非常有用,它的目的是预览命令的执行效果而不是命令真正执行。
。about_comparison_operators.help

Operator         Description           Example          t/f
-eq          equals        10 -eq 10        true
-ne          not equal         10 -ne 10        false
-gt          greater than          10 -gt 10        false
-ge          greater than or equal to        10 -ge 10        true
-lt          less than         10 -lt 10        false
-le          less than or equal to         10 -le 10        true
-like        wildcard comparison           "one" -like "o*"         true
-notlike         wildcard comparison           "one" -notlike "o*"          false
-match        regular expression comparison        "book" -match "[iou]"        true
-notmatch        regular expression comparison        "book" -notmatch "[iou]"         false
例:if ($varA -gt $varB)
{
Write-Host "Condition evaluates to true."
}
else
{
Write-Host "Condition evaluates to false."
}
还包括RANGE OPERATOR(范围操作符号),用  ..  表示
例:foreach($varA in 1..$varB)
{
Write-Host $varA
}
还包括REPLACE OPERATOR(替代操作符)

Operator           Case          Example         Results
-replace           case insensitive          "book" -replace "B", "C"        Cook
-ireplace          case insensitive          "book" -ireplace "B", "C"           Cook
-creplace          case sensitive        "book" -creplace "B", "C"           book
还包括bitwise operators(逐位操作符)---没读懂????
Operator         Description           Example        Results
-band        bitwise and           10 -band 3         2
-bor         bitwise or        10 -bor 3          11
还包括type operators(类型操作符)
Operator         Description           Example        Results
-is        Is of a specified type        $true -is [bool]         true
-is          Is of a specified type        32 -is [int]         true
-is        Is of a specified type         32 -is [double]          false
-isnot        Is not of a specified type         $true -isnot [bool]          false
还有 I  和  c  在操作符中的使用。
例:”a” –eq “A” 不区分大小写,结果是:true 。
例:”a” –ieq “A” 注意加了字母i,还是不区分大小写,结果是:true 。
例:”a” –ceq “A” 注意加了字母c,此时是区分大小写,结果是:false 。
除了i和c外,其它的字母就不能用了。还有,请参考replace operators表中i和c加强理解。记住,它们都是对大写字母操作,如表中例子改成 ”book” –creplace  “b”,”c”,就执行替换,结果为: cook,将”b”,”c”换成”B”,”C”,就不执行替换了。
。about_continue.help
Continue:它的作用就是返回到顶部。
例:while ($num –lt 10)
    {
        $num +=1
        if  ($num  -eq   5) {continue}
        write-host  $num
     }
  执行结果:从1到10只有5没有输出其它数字均输出。
切记:在for循环语句中,不要将continue写在循环语句的首行。如果for 循环中的参数检测到在for语句中有值发生改变,将导致infinite loop(死循环或无限循环)。
。about_core_commands.help
所有的powershell core_command(内核命令)都与数据存储有联系。
以下是core_commands list
ChildItem CMDLETS
•         Get-ChildItem

CONTENT CMDLETS
•         Add-Content
•         Clear-Content
•         Get-Content
•         Set-Content

DRIVE CMDLETS
•         Get-PSDrive
•         New-PSDrive
•         Remove-PSDrive

ITEM CMDLETS
•         Clear-Item
•         Copy-Item
•         Get-Item
•         Invoke-Item
•         Move-Item
•         New-Item
•         Remove-Item
•         Rename-Item
•         Set-Item

LOCATION CMDLETS
•         Get-Location
•         Pop-Location
•         Push-Location
•         Set-Location

PATH CMDLETS
•         Join-Path
•         Convert-Path
•         Split-Path
•         Resolve-Path
•         Test-Path

PROPERTY CMDLETS
•         Clear-ItemProperty
•         Copy-ItemProperty
•         Get-ItemProperty
•         Move-ItemProperty
•         New-ItemProperty
•         Remove-ItemProperty
•         Rename-ItemProperty
•         Set-ItemProperty

PROVIDER CMDLETS
•         Get-PSProvider
。about_environment_variables.help
environment_variables(环境变量):就是包括系统环境信息的变量,如包含OS的path;OS使用的进程;OS的临时文件夹等信息。
set-location  env:  ;  get-childitem :进入环境变量驱动器env: ,并查看env: 下的内容。可用get-childitem env:代替上述命令。如需查看特定环境变量,如OS,可用get-childitem env:os,还可用$env:os代替它,它的语法格式$env:<variable-name>。
$env:<variable-name>=”<new-value>” :改变environment-variables,例$env:path=$env:path+”;c:\test” #将c:\test加入到path环境变量中去。该语句可用set-item –path $env:path  -value  ($env:path+”;c:\test”)代替。
Get-childitem和get-item在env:下相当,其它env:下的item命令也类似:因为在env:没有子项。
get-item env:* | get-member | sort name#获得所有environment_variables的properties and methods,并按name排序。
。about_escape_character.help
escape_character:换码符。包括如下字符:
•         `'   -- Single quote
•         `"   -- Double quote例Write-Host "Hi, `"Jim`""#结果输出Hi,”Jim”
•         `0   -- Null
•         `a   -- Alert
•         `b   -- Backspace(退格键)例write-host “backup’b’bout”#执行结果是backout,up被backspace删除掉了。
•         `f   -- Form feed
•         `n   -- New line例Write-Host "Break the line `nhere"#输出两行,第1行内容是Break the line,第2行是here
•         `r   -- Carriage return
•         `t   -- Horizontal tab例:Write-Host "12345678123456781`nCol1`tColumn2`tCol3"#输出结果
12345678123456781
Col1 Column2 Col3
•         `v   -- Vertical tab
在一个脚本文件行的末尾使用grave accent(重音符) `,表示接着下一行继续命令。例:有个ps1文件,内容如下:
Write-Host `
"This shows the line continuation character."
执行结果:This shows the line continuation character.
。about executation_environment.help(太多了,头疼!先跳过吧)
executation_environment包括如下元素:
•         Current namespace (Namespace)
Namespaces correspond to(相当于)powershell provider(提供程序)。命名空间实际上是与不同类型的驱动器相对应的,比如说filesystem namspacer是与我们熟悉的文件系统驱动器c:或d: etc盘符对应的,并且,不同的命名空间可以很方便的互访,比如说现在在filesystem namespace的c:下,希望访问注册表分支hklm:,set-locatio hklm:就行,希望访问hklm下的software,set-location hklm:\software就行。
•         Current working location (Location)
set-location:用于修改当前工作位置
如果当前目录是c:\windows,那么get-childitem system32就是查看system32目录下的子项;如果假设system32是个file,那么就会显示该file的详细信息。
•         Shell functions (Function)
函数function就是个“代码块”。有两种functin:regular function和filters。Regular function同过滤filter不同之处在于function等到来自管道的所有对象都收到之后在处理;而filter不必等所有的object收到后在处理,它可以对单个object处理,filter是通过where-object完成的。
例:创建一个function
function small_files
{
Get-ChildItem c:\ | where { $_.length -lt 100
-and !$_.PSIsContainer}
}
例:创建带参数的function
function add2
{
$args[0] + $args[1]
}
执行add2  1 2
例:创建一个filter
filter process_c
{
$_.processname -like "c*"
}

2009-2-26 05:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『第 4 楼』:  

接着自己占!
chapter1:PowerShell是什么?如何安装?
PowerShell是微软开发的下一代"命令行外壳和脚本语言",希望代替cmd.exe和VBScript.
PowerShell为微软进军服务器市场吹响号角.

PowerShell是以HotFix形式安装的,优点是可以利用Service Pack和Windows Update修复和更新powershell;缺点是卸载麻烦,必须按顺序先卸载Service Pack,再卸载HotFix,与其这样还不如重新安装OS.

2009-4-1 20:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『第 5 楼』:  

chapter1:创建配置文件?配置PowerShell启动选项?

创建配置文件:export-console  myconsole
导入配置文件:import-console  具体路径\myconsole.psc1,注意配置文件后缀是psc1

配置powershell启动选项:
不带logo启动:powershell -nologo
带版本信息启动:powershell -version 1.0
使用特定配置文件启动:powershell -psconsolefile myconsole.psc1
带特定命令启动后退出powershell:powershell -command "&{get-command}",注意,要执行的命令必须以&开头,并被{ }括起来

2009-4-1 20:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『第 6 楼』:  

chapter1:powershell开发中的四个关键命令

掌握了get-command get-member get-help get-psdrive,就可以说基本掌握了powershell.

get-command:获得powershell的可用命令.
获得名词部分是service的命令:get-command  -noun service,它相当于get-command *-service
获得动词部分是get的全部命令:get-command  -verb get,它相当于get-command get-*
获得其它命令类型如函数的命令:get-command  -commandtype  fucntion
获得名词部分以p打头的命令:get-command -noun P*
获得动词以set开头的命令:get-command set-*
get-command还可以收集其它项目的信息,包括诸如exe和dll等:get-commnad  *.dll
当然可以限定收集的信息:get-command  *file*  -commandtype  cmdlet


get-member:获得对象的属性和方法.
例:get-process | get-member 或get-process | get-member -membertype  property
获得静态属性和方法:get-process | get-member  -static

get-help:当然是获得命令的帮助信息,常用的几个参数-normal(常规信息);-detailed(细节信息);-full(完整信息);-example(命令事例).
获得所有帮助信息:get-help *
获得概念性主题帮助信息:get-help about*
例:get-help get-service -full  -example
get-help命令还可以用man和help函数代替逐屏显示,当然get-help可以利用more达到此类效果,如:get-service | more .

get-psdrive:获得所有驱动器类型
PowerShell不仅有"文件系统驱动器,还有诸如:注册表驱动器,函数驱动器,别名驱动器等",在filesystemdrive中可使用的命令在其它驱动器中仍然好使!
get-command  *-item*经常被使用

2009-4-1 21:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『第 7 楼』:  

chapter1:控制命令执行方式的参数?
-whatif:命令的预览.有些命令执行会有意外效果,为避免它可预览命令的执行过程.
-confirm:可以代替-whatif,就是命令执行前需要确认一下.
suspend(挂起):有时候输入了很长的命令才发现还有一点工作没有做,但又不希望长命令白百输入,可先将命令suspend,准备好了在回到suspend的命令,可通过exit回到suspend.
-verbose:让cmdlet提供更详细的信息,对比没有参数时
-debug:让cmdlet提供调试信息
-erroraction:让cmdlet在发生错误时进行执行选择,是continue,stop,silentlycontinue,inquire(询问)
-errorvariable:让cmdlet发生错误时用特定变量保存错误信息.
-outvariable:让cmdlet使用特定变量保存输出信息.
-outbuffer:让cmdlet在调用管道中的下一个cmdlet前保存特定数量的对象

2009-4-1 21:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zhouwu1985
新手上路





积分 10
发帖 6
注册 2007-2-8
状态 离线
『第 8 楼』:  

这家伙...我装server 2008 有顺便装上了...
不过还没有研究~

2009-5-25 13:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: