powershell完全学习手册簿.docx

上传人:b****8 文档编号:27685002 上传时间:2023-07-04 格式:DOCX 页数:77 大小:127.77KB
下载 相关 举报
powershell完全学习手册簿.docx_第1页
第1页 / 共77页
powershell完全学习手册簿.docx_第2页
第2页 / 共77页
powershell完全学习手册簿.docx_第3页
第3页 / 共77页
powershell完全学习手册簿.docx_第4页
第4页 / 共77页
powershell完全学习手册簿.docx_第5页
第5页 / 共77页
点击查看更多>>
下载资源
资源描述

powershell完全学习手册簿.docx

《powershell完全学习手册簿.docx》由会员分享,可在线阅读,更多相关《powershell完全学习手册簿.docx(77页珍藏版)》请在冰豆网上搜索。

powershell完全学习手册簿.docx

powershell完全学习手册簿

Powershell定义变量

 Powershell,程序设计 添加评论

十二052011

 

变量可以临时保存数据,因此可以把数据保存在变量中,以便进一步操作。

帮助

01

02

03

04

05

06

07

08

09

10

11

#定义变量

$a=10

$b=4

#计算变量

$result=$a*$b

  

$msg="保存文本"

  

#输出变量

$result

$msg

40

保存文本

powershell不需要显示地去声明,可以自动创建变量,只须记住变量的前缀为$.

创建好了变量后,可以通过变量名输出变量,也可以把变量名存在字符串中。

但是有个例外单引号中的字符串不会识别和处理变量名。

选择变量名

在powershell中变量名均是以美元符”$”开始,剩余字符可以是数字、字母、下划线的任意字符,并且powershell变量名大小写不敏感($a和$A是同一个变量)。

某些特殊的字符在powershell中有特殊的用途,一般不推荐使用这些字符作为变量名。

当然你硬要使用,请把整个变量名后缀用花括号括起来。

PSC:

\>${"I"like$}="mossfly"

PSC:

\>${"I"like$}

mossfly

赋值和返回值

赋值操作符为“=”,几乎可以把任何数据赋值给一个变量,甚至一条cmdlet命令

,为什么,因为Powershell支持对象,对象可以包罗万象。

PSC:

\>$item=Get-ChildItem.

PSC:

\>$item

Directory:

C:

\

ModeLastWriteTimeLengthName

---------------------------

d----2011/11/2317:

25ABC

-a---2011/11/2418:

3067580a.html

-a---2011/11/2420:

0426384a.txt

-a---2011/11/2420:

2612060alias

-a---2011/11/2420:

2712060alias.ps1

-a---2011/11/2317:

250b.txt

-a---2011/11/2317:

250c.txt

-a---2011/11/2317:

250d.txt

-a---2011/11/2511:

20556employee.xml

-a---2011/11/2417:

377420name.html

-a---2011/11/2815:

3063ping.bat

-a---2011/11/2417:

44735892Powershell_Cmdlets.html

-a---2011/11/2817:

0360test.ps1

-a---2011/11/2317:

37242test.txt

-a---2011/11/2816:

42170test.vbs

PSC:

\>$result=3000*(1/12+0.0075)

PSC:

\>$result

272.5

给多个变量同时赋值

赋值操作符不仅能给一个变量赋值,还可以同时给多个变量赋相同的值。

PSC:

\>$a=$b=$c=123

PSC:

\>$a

123

PSC:

\>$b

123

PSC:

\>$c

123

交换变量的值

要交换两个变量的值,传统的程序语言至少需要三步,并且还需定义一个中间临时变量。

$Value1=10

$Value2=20

$Temp=$Value1

$Value1=$Value2

$Value2=$Temp

在powershell中,交换两个变量的值,这个功能变得非常简单。

PSC:

\>$value1=10

PSC:

\>$value2=20

PSC:

\>$value1,$value2=$value2,$value1

PSC:

\>$value1

20

PSC:

\>$value2

10

查看正在使用的变量

Powershell将变量的相关信息的记录存放在名为variable:

的驱动中。

如果要查看所有定义的变量,可以直接遍历variable:

PSC:

\>lsvariable:

NameValue

---------

"I"like$mossfly

$cls

True

^cls

_

11

a123

args{}

b123

c123

ConfirmPreferenceHigh

ConsoleFileName

DebugPreferenceSilentlyContinue

查找变量

因为有虚拟驱动variable:

的存在,可以象查找文件那样使用通配符查找变量。

例如要查询以value打头的变量名。

PSC:

\>lsvariable:

value*

NameValue

---------

value120

value210

验证变量是否存在

验证一个变量是否存在,仍然可以象验证文件系统那样,使用cmdletTest-Path。

为什么?

因为变量存在变量驱动器中。

PSC:

\>Test-Pathvariable:

value1

True

PSC:

\>Test-Pathvariable:

value2

True

PSC:

\>Test-Pathvariable:

valueUnkonw

False

删除变量

因为变量会在powershell退出或关闭时,自动清除。

一般没必要删除,但是你非得删除,也可以象删除文件那样删除它。

PSC:

\>Test-Pathvariable:

value1

True

PSC:

\>delvariable:

value1

PSC:

\>Test-Pathvariable:

value1

False

使用专用的变量命令

为了管理变量,powershell提供了五个专门管理变量的命令Clear-Variable,Get-Variable,New-Variable,Remove-Variable,Set-Variable。

因为虚拟驱动器variable:

的存在,clear,remove,set打头的命令可以被代替。

但是Get-Variable,New-Variable。

却非常有用new-variable可以在定义变量时,指定变量的一些其它属性,比如访问权限。

同样Get-Variable也可以获取这些附加信息。

变量写保护

可以使用New-Variable的option选项在创建变量时,给变量加上只读属性,这样就不能给变量重新赋值了。

PSC:

\>New-Variablenum-Value100-Force-Optionreadonly

PSC:

\>$num=101

Cannotoverwritevariablenumbecauseitisread-onlyorconstant.

Atline:

1char:

5

+$num<<<<=101+CategoryInfo:

WriteError:

(num:

String)[],SessionStateUnauthorizedAccessException+FullyQualifiedErrorId:

VariableNotWritablePSC:

\>delVariable:

\num

Remove-Item:

Cannotremovevariablenumbecauseitisconstantorread-only.Ifthevariableisread-only,

rationagainspecifyingtheForceoption.

Atline:

1char:

4

+del<<<

\num

+CategoryInfo:

WriteError:

(num:

String)[Remove-Item],SessionStateUnauthorizedAccessExcepti

+FullyQualifiedErrorId:

VariableNotRemovable,Microsoft.PowerShell.Commands.RemoveItemCommand

但是可以通过删除变量,再重新创建变量更新变量内容。

PSC:

\>delVariable:

\num-Force

PSC:

\>$num=101

PSC:

\>$num

101

有没有权限更高的变量,有,那就是:

选项Constant,常量一旦声明,不可修改

PSC:

\>new-variablenum-Value"strong"-Optionconstant

PSC:

\>$num="why?

cannotdeleteit."

Cannotoverwritevariablenumbecauseitisread-onlyorconstant.

Atline:

1char:

5

+$num<<<<="why?

cannotdeleteit."+CategoryInfo:

WriteError:

(num:

String)[],SessionStateUnauthorizedAccessException+FullyQualifiedErrorId:

VariableNotWritablePSC:

\>delVariable:

\num-Force

Remove-Item:

Cannotremovevariablenumbecauseitisconstantorread-only.Ifthevariableisread-only,

rationagainspecifyingtheForceoption.

Atline:

1char:

4

+del<<<

\num-Force

+CategoryInfo:

WriteError:

(num:

String)[Remove-Item],SessionStateUnauthorizedAccessExcepti

+FullyQualifiedErrorId:

VariableNotRemovable,Microsoft.PowerShell.Commands.RemoveItemCommand

变量描述

在New-Variable可以通过-description添加变量描述,但是变量描述默认不会显示,可以通过Format-List查看。

PSC:

\>new-variablename-Value"me"-Description"Thisismyname"

PSC:

\>lsVariable:

\name|fl*

PSPath:

Microsoft.PowerShell.Core\Variable:

:

name

PSDrive:

Variable

PSProvider:

Microsoft.PowerShell.Core\Variable

PSIsContainer:

False

Name:

name

Description:

Thisismyname

Value:

me

Visibility:

Public

Module:

ModuleName:

Options:

None

Attributes:

{}

Powershell自动化变量

 Powershell,程序设计 添加评论

十二072011

 

Powershell自动化变量是那些一旦打开Powershell就会自动加载的变量。

这些变量一般存放的内容包括

用户信息:

例如用户的根目录$home

配置信息:

例如powershell控制台的大小,颜色,背景等。

运行时信息:

例如一个函数由谁调用,一个脚本运行的目录等。

PSC:

\PowerShell>$HOME

C:

\Users\test

PSC:

\PowerShell>$currentProcessID=$pid

PSC:

\PowerShell>$currentProcessID

5356

PSC:

\PowerShell>Get-Process-Id$pid

HandlesNPM(K)PM(K)WS(K)VM(M)CPU(s)IdProcessName

-----------------------------------------------

3901030604331001721.115356powershell

PSC:

\PowerShell>$PROFILE

C:

\Users\test\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

powershell中的某些自动化变量只能读,不能写。

例如:

$Pid。

可以通过Get-Helpabout_Automatic_variables查看Automatic_variables的帮助。

TOPIC

about_Automatic_Variables

主题

about_Automatic_Variables

简短说明

说明存储WindowsPowerShell状态信息的变量。

这些变量由WindowsPowerShell创建并维护。

详细说明

下面是WindowsPowerShell中的自动变量的列表:

$$

包含会话所收到的最后一行中的最后一个令牌。

$?

包含最后一个操作的执行状态。

如果最后一个操作成功,则包含TRUE,失败则包含FALSE。

$^

包含会话所收到的最后一行中的第一个令牌。

$_

包含管道对象中的当前对象。

在对管道中的每个对象或所选对象执行操作的命令中,可以使用此变量。

$Args

包含由未声明参数和/或传递给函数、脚本或脚本块的参数值组成的数组。

在创建函数时可以声明参数,方法是使用param关键字或在函数名称后添加以圆括号括起、逗号

分隔的参数列表。

$ConsoleFileName

包含在会话中最近使用的控制台文件(.psc1)的路径。

在通过PSConsoleFile参数启动

WindowsPowerShell或使用Export-Consolecmdlet将管理单元名称导出到控制台文件

时,将填充此变量。

在使用不带参数的Export-Consolecmdlet时,它自动更新在会话中最近使用的控制台文件。

可以使用此自动变量确定要更新的文件。

$Error

包含错误对象的数组,这些对象表示最近的一些错误。

最近的错误是该数组中的第一个错误对象

($Error[0])。

$Event

包含一个PSEventArgs对象,该对象表示一个正在被处理的事件。

此变量只在事件注册命令(例如Register-ObjectEvent)的Action块内填充。

此变量的值是Get-Eventcmdlet返回的同一个对象。

因此,可以在Action脚本块中使用$Event变量的属性(例如

$Event.TimeGenerated)。

$EventSubscriber

包含一个PSEventSubscriber对象,该对象表示正在被处理的事件的事件订阅者。

此变量只在事件注册命令的Action块内填充。

此变量的值

是Get-EventSubscribercmdlet返回的同一个对象。

$ExecutionContext

包含一个EngineIntrinsics对象,该对象表示WindowsPowerShell主机的执行上下文。

可以使用此变量来查找可用于cmdlet的执行对象。

$False

包含FALSE。

可以使用此变量在命令和脚本中表示FALSE,而不是使用字符串”false”。

如果

该字符串转换为非空字符串或非零整数,则可将该字符串解释为TRUE。

$ForEach

包含ForEach-Object循环的枚举数。

可以对$ForEach变量的值使用枚举数的属性和方法。

此变量仅在运行For循环时存在,循环完成即会删除。

$Home

包含用户的主目录的完整路径。

此变量等效于%homedrive%%homepath%环境变量。

$Host

包含一个对象,该对象表示WindowsPowerShell的当前主机应用程序。

可以使用此变量在命

令中表示当前主机,或者显示或更改主机的属性,如$Host.version、$Host.CurrentCulture

或$host.ui.rawui.setbackgroundcolor(“Red”)。

$Input

一个枚举数,它包含传递给函数的输入。

$Input变量区分大小写,只能用于函数和脚本块。

(脚

本块本质上是未命名的函数。

)在函数的Process块中,$Input变量包含当前位于管道中的对

象。

在Process块完成后,$Input的值为NULL。

如果函数没有Process块,则$Input

的值可用于End块,它包含函数的所有输入。

$LastExitCode

包含运行的最后一个基于Windows的程序的退出代码。

$Matches

$Matches变量与-match和-notmatch运算符一起使用。

将标量输入提交给-match或-notmatch运算符时,如果检测到匹配,则会返回一个布尔值,

并使用由所有匹配字符串值组成的哈希表填充$Matches自动变量。

有关-match运算符的详细

信息,请参阅about_comparison_operators。

$MyInvocation

包含一个对象,该对象具有有关当前命令(如脚本、函数或脚本块)的信息。

可以使用该对象中的

信息(如脚本的路径和文件名($myinvocation.mycommand.path)或函数的名称

($myinvocation.mycommand.name))来标识当前命令。

对于查找正在运行的脚本的名称,这非常有用。

$NestedPromptLevel

包含当前提示级别。

值0指示原始提示级别。

该值在进入嵌套级别时递增,在退出嵌套级别时递减。

例如,在使用$Host.EnterNestedPrompt方法时,WindowsPowerShell会出现嵌套命令

提示符。

在WindowsPowerShell调试程序中到达断点时,WindowsPowerShell也会出现嵌

套命令提示符。

在进入嵌套提示时,WindowsPowerShell暂停当前命令,保存执行上下文,并递增

$NestedPromptLevel变量的值。

要创建更多嵌套命令提示符(最多128级)或返回到原始命

令提示符,请完成命令,或键入”exit”。

$NestedPromptLevel变量有助于跟踪提示级别。

可以创建包含此值的备用Windows

PowerShell命令提示符,以使此值始终可见。

$NULL

包含NULL或空值。

可以在命令和脚本中使用此变量表示NULL,而不是使用字符串”NULL”。

如果该字符串转换为非空字符串或非零整数,则可将该字符串解释为TRUE。

$PID

包含承载当前WindowsPowerShell会话的进程的进程标识符(PID)。

$Profile

包含当前用户和当前主机应用程序的WindowsPowerShell配置文件的完整路径。

可以在命令

中使用此变量表示配置文件。

例如,可以在命令中使用此变量确定是否已创建某个配置文件:

test-path$profile

也可以在命令中使用此变量创建配置文件:

new-item-typefile-path$pshome-force

此外,还可以在命令中使用此变量在记事本中打开配置文件:

notepad$profile

$PSBoundParameters

包含活动参数及其当前值的字典。

只有在声明参数的作用域(如脚本或函数)中,

此变量才有值。

可以使用此变量显示或更改参数的当前值,也可以将参数值传递给

其他脚本或函数。

例如:

functiontest{

param($a,$b)

#Displaytheparametersindictionaryformat.

$psboundparameters

#CalltheTest1functionwith$aand$b.

test1@psboundparameters

}

$PsCmdlet

包含一个对象,该对象表示正在运行的cmdlet或高级函数。

可以在cmdlet或函数代码中使用该对象的属性和方法来响应使用的条件。

例如,

ParameterSetName属性包含正在使用的参数集的名称,而ShouldProcess方法将WhatIf

和Confirm参数动态添加到cmdlet。

有关$PSCmdlet自动变量的详细信息,请参阅about_Functions_Advanced。

$PsCulture

包含操作系统中当前所用的区域性的名称。

区域性确定数字、货币和日期等项的显示格式。

这是系

统的System.Globalization.CultureInfo.CurrentCulture.Name属性的值。

要获取系统

的System.Globalization.CultureInfo对象,请使用Get-Culturecmdl

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 公务员考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1