PowerShell 7 将是 PowerShell 第多个 LTS(Long Term Servicing)
版本,这几天 Preview 4 版本现已透露了。

1. Powershell自动化变量

Powershell 自动化变量
是那个大器晚成旦张开Powershell就能够活动加载的变量,恐怕说是运营是变量。

那一个变量日常存放的开始和结果囊括

顾客音讯:举例顾客的根目录$home

配备新闻:举个例子powershell调整台的高低,颜色,背景等。

运转时消息:比如二个函数由什么人调用,一个本子运维的目录等。

图片 1

powershell中的有个别自动化变量只可以读,不可能写。例如:$Pid。

能够由此Get-Help
about_Automatic_variables查看Automatic_variables的帮助。

图片 2

TOPIC
about_Automatic_Variables

主题
about_Automatic_Variables

简短表达
申明存款和储蓄 Windows PowerShell 状态音信的变量。
那些变量由 Windows PowerShell 创造并保证。

详见表明
上边是 Windows PowerShell 中的自动变量的列表:

$$
包涵会话所吸收接纳的最后风流罗曼蒂克行中的最终一个令牌。

$?
带有最终三个操作的实行景况。假若最后一个操作成功,则带有 TRUE,退步则含有 FALSE。

$^
包罗会话所吸收接纳的终超大器晚成行中的第八个令牌。

$_
含有管道对象中的当前目的。在对管道中的每一个对象或所选老婆施行操作的通令中,能够运用此变量。

$Args
蕴涵由未评释参数和/或传递给函数、脚本或脚本块的参数值组成的数组。
在开创函数时得以表明参数,方法是行使 param 关键字或在函数名称后加多以圆括号括起、逗号
相隔的参数列表。

$ConsoleFileName
含有在对话中最近接收的调节台文件 (.psc1卡塔尔(قطر‎ 的门道。在通过 PSConsoleFile 参数运营
Windows PowerShell 或选择Export-Console cmdlet 将管理单元名称导出到调控台文件
时,将填充此变量。

在行使不带参数的 Export-Console cmdlet 时,它自动更新在对话中如今选取的调整台文件。
可以应用此活动变量明确要更正的文本。

$Error
富含错误对象的数组,这个指标表示这两天的大器晚成对错误。前段时间的不当是该数组中的第贰个谬误对象
($Error[0])。

$Event
含有一个 PSEventArgs 对象,该对象表示多个正值被管理的平地风波。
此变量只在事件注册命令(举个例子 Register-Object伊芙nt)的
Action 块内填充。
此变量的值是 Get-伊芙nt cmdlet 重回的同三个对象。
之所以,能够在 Action 脚本块中央银行使 $Event 变量的属性(举个例子
$Event.TimeGenerated)。

$EventSubscriber
富含三个 PS伊夫ntSubscriber 对象,该目的表示正在被管理的平地风波的轩然大波订阅者。
此变量只在事变注册命令的 Action 块内填充。此变量的值
是 Get-伊芙ntSubscriber cmdlet 重返的同一个对象。

$ExecutionContext
含蓄一个 EngineIntrinsics 对象,该目的表示 Windows PowerShell 主机的实践上下文。
可以接纳此变量来寻找可用于 cmdlet 的实践对象。

$False
含蓄 FALSE。可以选用此变量在指令和本子恋慕味 FALSE,而不是行使字符串”false”。如若
该字符串调换为非空字符串或非零整数,则可将该字符串解释为 TRUE。

$ForEach
含蓄 ForEach-Object 循环的枚举数。能够对 $ForEach 变量的值使用枚举数的质量和方式。
此变量仅在运营 For 循环时存在,循环完毕即会删除。

$Home
含蓄顾客的主目录的生机勃勃体化路线。此变量等效于 %homedrive%%homepath% 情形变量。

$Host
满含一个目的,该指标表示 Windows PowerShell 的当下主机应用程序。可以使用此变量在命
令中代表前段时间主机,或然突显或退换主机的品质,如 $Host.version、$Host.CurrentCulture

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

$Input
多少个枚举数,它包含传递给函数的输入。$Input 变量区分朗朗上口写,只好用来函数和脚本块。(脚
本块本质上是未命名的函数。)在函数的 Process 块中,$Input 变量饱含当前位居管道中的对
象。在 Process 块落成后,$Input 的值为
NULL。假诺函数未有 Process 块,则
$Input
的值可用来 End 块,它含有函数的全体输入。

$LastExitCode
满含运转的末尾三个基于 Windows 的主次的淡出代码。

$Matches
$Matches 变量与 -match 和 -not
match 运算符一同行使。
将标量输入提交给 -match 或
-notmatch 运算符时,假若检查测验到格外,则会回来一个布尔值,
并运用由全数相配字符串值组成的哈希表填充 $Matches 自动变量。有关 -match 运算符的详尽
信息,请参阅 about_comparison_operators。

$MyInvocation
满含多个目的,该指标具有有关当前下令(如脚本、函数或脚本块)的音讯。能够采纳该目的中的
音信(如脚本的门路和文件名 ($myinvocation.mycommand.pathState of Qatar 或函数的称号
($myinvocation.mycommand.name卡塔尔国)来标志当前下令。对于查找正在周转的本子的名目,那可怜管用。

$NestedPromptLevel
满含当前提示品级。值 0 提示原始提示等第。该值在步向嵌套等第时依次增加,在退出嵌套等第时依次减少。

例如说,在运用 $Host.EnterNestedPrompt 方法时,Windows PowerShell 会现身嵌套命令
提醒符。在 Windows PowerShell 调节和测试程序中达到断点时,Windows PowerShell 也汇合世嵌
套命令提醒符。

在步入嵌套提醒时,Windows PowerShell 暂停当前命令,保存试行上下文,并依次增加
$NestedPromptLevel 变量的值。要创设越来越多嵌套命令指示符(最多 128 级)或再次回到到原始命
令提醒符,请达成命令,或键入”exit”。

$NestedPromptLevel 变量有帮忙追踪提醒等级。能够创造富含此值的备用 Windows
PowerShell 命令提示符,以使此值始终可以看到。

$NULL
满含 NULL 或空值。能够在指令和本子中采用此变量表示 NULL,并非应用字符串”NULL”。
假若该字符串转变为非空字符串或非零整数,则可将该字符串解释为 TRUE。

$PID
包蕴承载当前 Windows PowerShell 会话的进程的进度标志符 (PID卡塔尔(قطر‎。

$Profile
含有当前顾客和脚下主机应用程序的 Windows PowerShell 配置文件的风流倜傥体化路线。能够在命令
中采用此变量表示配置文件。比方,能够在指令中应用此变量分明是不是已创设有个别配置文件:

test-path
$profile

也足以在指令中央银行使此变量创立结构文件:

new-item
-type file -path $pshome -force

除此以外,还是能够在指令中应用此变量在记事本中开采配置文件:

notepad
$profile

$PSBoundParameters
包罗移动参数及其当前值的字典。唯有在宣称参数的功效域(如脚本或函数)中,
此变量才有值。能够利用此变量展现或退换参数的近期值,也得以将参数值传递给
其余脚本或函数。

例如:

function
test {
param($a, $b)

#
Display the parameters in dictionary format.
$psboundparameters

# Call
the Test1 function with $a and $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-Culture cmdlet。

$PSDebugContext
在调节和测量检验期间,此变量包罗关于调节和测验意况的音讯。在其余时间,此变量包蕴 NULL 值。因而,能够使
用此变量提示调节和测验程序是不是富有调整权。填充之后,此变量包蕴八个有所 Breakpoints 和
InvocationInfo 属性的 PsDebugContext 对象。InvocationInfo 属性有三个非常立竿见影的
属性,满含 Location 属性。Location 属性提示正在调节和测量检验的台本的路径。

$PsHome
富含 Windows PowerShell 的设置目录的完全路线(日常为
%windir%System32WindowsPowerShellv1.0)。可以在 Windows PowerShell 文件
的不二等秘书籍中使用此变量。比方,下边包车型地铁吩咐在概念性支持核心中查找”variable”意气风发词:

select-string
-pattern variable -path $pshome*.txt

$PSScriptRoot
蕴涵要从中试行脚本模块的目录。
由此此变量,脚本能够使用模块路线来做客其余财富。

$PsUICulture
含蓄操作系统中当前所用的顾客分界面 (UI卡塔尔 区域性的名称。UI 区域性明确怎么样文本字符串用于顾客
分界面成分(如菜单和新闻)。那是系统的
System.Globalization.CultureInfo.CurrentUICulture.Name 属性的值。要获得系统
的 System.Globalization.CultureInfo 对象,请使用 Get-UICulture cmdlet。

$PsVersionTable
富含三个只读哈希表,该哈希表突显有关在现阶段对话中运作的 Windows PowerShell 版本的详
细信息。
该表包含下列项:

CLEscortVersion:
公共语言运营时 (CLEvoqueState of Qatar 的本子

BuildVersion:
当前版本的当中版本号

PSVersion:
Windows PowerShell 版本号

WSManStackVersion:
WS-Management 宾馆的版本号

PSCompatibleVersions:
与日前版本包容的 Windows PowerShell 版本

SerializationVersion 类别化方法的版本

PSRemotingProtocolVersion
Windows PowerShell 远程管理左券的版本

$Pwd
富含二个门路对象,该指标表示当前目录的完全路线。

$Sender
满含生成那件事件的目标。此变量只在事变注册命令的 Action 块内填充。
此变量的值也可在 Get-伊芙nt 再次来到的
PSEventArgs
(System.Management.Automation.PS伊夫ntArgsState of Qatar 对象的
Sender 属性中找到。

$ShellID
带有当前 shell 的标志符。

$SourceArgs
包涵表示正在被管理的风云的风云参数的靶子。此变量只在事件注册命令的 Action
块内填充。此变量的值也可在 Get-伊芙nt 重临的
PS伊夫ntArgs
(System.Management.Automation.PS伊夫ntArgs卡塔尔国 对象的
SourceArgs 属性中找到。

$SourceEventArgs
包含一个对象,该对象表示从正在被管理的风云的 EventArgs 中派生出的
首先个事件参数。此变量只在事变注册命令的 Action 块内填充。
此变量的值也可在 Get-伊夫nt 再次回到的
PS伊芙ntArgs
(System.Management.Automation.PSEventArgsState of Qatar 对象的
SourceArgs 属性中找到。

$This
在概念脚本属性或脚本方法的脚本块中,$This 变量引用要扩大的对象。

$True
带有 TRUE。能够在命令杭剧本中利用此变量表示 TRUE。

另请参阅
about_Hash_Tables
about_Preference_Va

riables
about_Variables

 

 

 

 

以下这个变量是由powershell创设和维护的.
ls Variable: 能够获得到具有暗中同意的变量, 各样版本的Powershell恐怕有反差

此版本蕴含了大器晚成都部队分 bug 修复,同时也拉动了几个新特色:

$$
含有会话所收到的结尾朝气蓬勃行中的最终一个令牌。

三朝运算符

$?
包蕴最终三个操作的施行情状。若是最终一个操作成功,则含有
TRUE,战败则含有 FALSE。

引进可选的安慕希运算符,提升了可读性。

$^
饱含会话所收受的末段豆蔻梢头行中的第一个令牌。

图片 3

$_
含蓄管道对象中的当前目的。在对管道中的各类对象或所挑选老婆实施操作的授命中,能够行使此变量。

Start-Job -WorkingDirectory

$Args
富含由未注解参数和/或传递给函数、脚本或脚本块的参数值组成的数组。
在开立函数时得以评释参数,方法是选取 param
关键字或在函数名称后加多以圆括号括起、逗号
相隔的参数列表。

深谙 Start-Job cmdlet 的人会发觉新的 PowerShell 进程在 Windows
PowerShell 和 PowerShell Core 上起来 job
时怀有分歧的劳作目录。此版本增多 Start-Job -WorkingDirectory
参数,允许在脚本块运维在此以前线指挥部定 job 进程的职业目录。

$ConsoleFileName
包括在对话中而今使用的调节台文件 (.psc1卡塔尔 的路径。在通过 PSConsoleFile
参数运行
Windows PowerShell 或利用 Export-Console cmdlet
将管理单元名称导出到调整台文件
时,将填充此变量。

图片 4

在动用不带参数的 Export-Console cmdlet
时,它自动更新在对话中近期使用的调节台文件。
能够利用此活动变量分明要翻新的公文。

$ErrorActionPreference = “Break”

$Error
包涵错误对象的数组,这一个目的表示前段时间的一些八花九裂。前段时间的荒唐是该数组中的第叁个错误对象
($Error[0])。

假定设置
$ErrorActionPreference=”Break”,那么当现身谬误时它会及时步向调节和测验器。

$Event
满含四个 PSEventArgs 对象,该对象表示叁个正值被管理的事件。
此变量只在事件注册命令(举个例子 Register-Object伊芙nt)的 Action
块内填充。
此变量的值是 Get-Event cmdlet 重临的同二个对象。
据此,能够在 Action 脚本块中接收 $Event 变量的属性(比如
$Event.TimeGenerated)。

图片 5

$EventSubscriber
饱含一个 PSEventSubscriber
对象,该指标表示正在被管理的平地风波的事件订阅者。
此变量只在事变注册命令的 Action 块内填充。此变量的值
是 Get-伊夫ntSubscriber cmdlet 重回的同四个对象。

Invoke-DscResource

$ExecutionContext
富含三个 EngineIntrinsics 对象,该目的表示 Windows PowerShell
主机的实施上下文。
能够运用此变量来搜索可用来 cmdlet 的举办对象。

当今能够在绕过 LCM(Local Configuration
Manager,本地配置微处理器)的还要选用 DSC 能源。这象征能够创立和煦的
LCM,只怕只行使自身脚本中存活的 DSC
财富,那也适用于跨平台。然则,并不扶助二进制 DSC 财富。

$False
含有 FALSE。能够选取此变量在指令和本子中意味
FALSE,并非应用字符串”false”。借使
该字符串转变为非空字符串或非零整数,则可将该字符串解释为 TRUE。

图片 6

$ForEach
含蓄 ForEach-Object 循环的枚举数。能够对 $ForEach
变量的值使用枚举数的品质和方法。
此变量仅在运行 For 循环时存在,循环完结即会删除。

DSC 配置编写翻译

$Home
满含顾客的主目录的全部路线。此变量等效于 %homedrive%%homepath%
意况变量。

先前固然编写了 DSC 配置脚本,则必要利用 Windows Computer将其编写翻译为 mof
文件以计划到受管节点上。从 Preview 4 开首,今后得以在非 Windows
系统上进行 DSC 编写翻译。

$Host
包蕴贰个指标,该对象表示 Windows PowerShell
的当前主机应用程序。能够应用此变量在命
令中代表近日主机,恐怕展现或改变主机的质量,如
$Host.version、$Host.CurrentCulture
或 $host.ui.rawui.setbackgroundcolor(“Red”)。

图片 7

$Input
一个枚举数,它富含传递给函数的输入。$Input
变量区分抑扬顿挫写,只能用于函数和脚本块。(脚
本块本质上是未命名的函数。)在函数的 Process 块中,$Input
变量富含当前位居管道中的对
象。在 Process 块达成后,$Input 的值为 NULL。假设函数未有 Process 块,则
$Input
的值可用以 End 块,它包罗函数的具有输入。

详细情况查看:

$LastExitCode
含有运转的结尾三个依据 Windows 的主次的淡出代码。

PowerShell 7 Preview 4

$Matches
$Matches 变量与 -match 和 -not match 运算符一齐行使。
将标量输入提交给 -match 或 -notmatch
运算符时,假诺检验到特别,则会回去二个布尔值,
并行使由具有相称字符串值组成的哈希表填充 $Matches 自动变量。有关 -match
运算符的亲力亲为
信息,请参阅 about_comparison_operators。

(文/开源中中原人民共和国State of Qatar    

$MyInvocation
包含叁个对象,该指标具备有关当前命令(如脚本、函数或脚本块)的新闻。能够动用该指标中的
消息(如脚本的门径和文件名 ($myinvocation.mycommand.pathState of Qatar 或函数的称谓
($myinvocation.mycommand.nameState of Qatar)来标志当前下令。对于查找正在运作的本子的称号,那特别常有效。

$NestedPromptLevel
含有当前唤起品级。值 0
提醒原始提示级别。该值在步入嵌套等第时依次增加,在分离嵌套品级时依次减少。

举例说,在选拔 $Host.EnterNestedPrompt 方法时,Windows PowerShell
会现身嵌套命令
提醒符。在 Windows PowerShell 调节和测验程序中到达断点时,Windows PowerShell
也会身不由己嵌
套命令提醒符。

在步入嵌套提醒时,Windows PowerShell
暂停当前命令,保存实行上下文,并递增
$NestedPromptLevel 变量的值。要开创更加多嵌套命令提醒符(最多 128
级)或回到到原始命
令提示符,请达成命令,或键入”exit”。

$NestedPromptLevel 变量有利于追踪指示品级。可以创设包蕴此值的备用
Windows
PowerShell 命令提醒符,以使此值始终可以预知。

$NULL
含有 NULL 或空值。能够在命令金华昆本中接受此变量表示
NULL,实际不是应用字符串”NULL”。
如果该字符串转换为非空字符串或非零整数,则可将该字符串解释为 TRUE。

$PID
含有承载当前 Windows PowerShell 会话的历程的历程标志符 (PID卡塔尔国。

$Profile
包括当前顾客和眼下主机应用程序的 Windows PowerShell
配置文件的意气风发体化路径。能够在命令
中选用此变量表示配置文件。比如,能够在命令中运用此变量分明是或不是已开立某些配置文件:

test-path $profile

也能够在命令中使用此变量创造布局文件:

new-item -type file -path $pshome -force

其它,仍是可以够在命令中运用此变量在记事本中张开配置文件:

notepad $profile

$PSBoundParameters
富含移动参数及其当前值的辞典。独有在评释参数的效率域(如脚本或函数)中,
此变量才有值。能够动用此变量显示或退换参数的当下值,也能够将参数值传递给
别的脚本或函数。

例如:

function test {
param($a, $b)

# 以辞典格式呈现参数。
$psboundparameters

# 使用 $a 和 $b 调用 Test1 函数。
test1 @psboundparameters
}

$PsCmdlet
包含二个对象,该对象表示正在周转的 cmdlet 或高级级函数。

能够在 cmdlet
或函数代码中接收该目的的属性和措施来响应使用的原则。比如,
ParameterSetName 属性富含正在利用的参数集的名号,而 ShouldProcess 方法将
WhatIf
和 Confirm 参数动态增加到 cmdlet。

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

$PsCulture
蕴含操作系统中当前所用的区域性的称谓。区域性鲜明数字、货币和日期等项的来得格式。那是系
统的 System.Globalization.CultureInfo.CurrentCulture.Name
属性的值。要拿到系统
的 System.Globalization.CultureInfo 对象,请使用 Get-Culture cmdlet。

$PSDebugContext
在调解时期,此变量包蕴关于调节和测量试验境况的新闻。在此外时间,此变量满含 NULL
值。因而,能够使
用此变量提示调节和测量试验程序是或不是有所调节权。填充之后,此变量富含三个持有
Breakpoints 和
InvocationInfo 属性的 PsDebugContext 对象。InvocationInfo
属性有八个可怜卓有成效的
属性,包蕴 Location 属性。Location 属性提示正在调节和测量检验的脚本的路子。

$PsHome
带有 Windows PowerShell 的设置目录的全部路径(常常为
%windir%System32WindowsPowerShellv1.0)。可以在 Windows PowerShell
文件
的门道中央银行使此变量。举例,下边包车型地铁下令在概念性帮忙主旨中追寻”variable”生龙活虎词:

select-string -pattern variable -path $pshome*.txt

$PSScriptRoot
带有要从当中实施脚本模块的目录。
通过此变量,脚本能够行使模块路线来拜见别的财富。

$PsUICulture
蕴涵操作系统中当前所用的客商分界面 (UI卡塔尔国 区域性的称号。UI
区域性分明什么文本字符串用于客户
界面成分(如菜单和消息)。这是系统的
System.Globalization.CultureInfo.CurrentUICulture.Name
属性的值。要收获系统
的 System.Globalization.CultureInfo 对象,请使用 Get-UICulture cmdlet。

$PsVersionTable
含有一个只读哈希表,该哈希表展现有关在当下对话中运作的 Windows
PowerShell 版本的详
细信息。
该表满含下列项:

CL汉兰达Version: 公共语言运维时 (CLEnclave卡塔尔(قطر‎ 的本子

BuildVersion: 当前版本的在那之中版本号

PSVersion: Windows PowerShell 版本号

WSManStackVersion: WS-Management 宾馆的版本号

PSCompatibleVersions: 与前段时间版本包容的 Windows PowerShell 版本

SerializationVersion 类别化方法的本子

PSRemotingProtocolVersion
Windows PowerShell 远程管理公约的版本

$Pwd
包涵二个路径对象,该对象表示当前目录的完好路径。

$Sender
含蓄生成那件事件的靶子。此变量只在事件注册命令的 Action 块内填充。
此变量的值也可在 Get-伊夫nt 重临的 PS伊夫ntArgs
(System.Management.Automation.PS伊芙ntArgs卡塔尔国 对象的 Sender 属性中找到。

$ShellID
包含当前 shell 的标志符。

$SourceArgs
富含表示正在被拍卖的平地风波的平地风波参数的靶子。此变量只在事变注册命令的
Action
块内填充。此变量的值也可在 Get-Event 再次来到的 PSEventArgs
(System.Management.Automation.PSEventArgs卡塔尔 对象的 SourceArgs
属性中找到。

$SourceEventArgs
含有一个对象,该目的表示从正值被管理的平地风波的 EventArgs 中派生出的
先是个事件参数。此变量只在事变注册命令的 Action 块内填充。
此变量的值也可在 Get-Event 重返的 PS伊芙ntArgs
(System.Management.Automation.PSEventArgs卡塔尔 对象的 SourceArgs
属性中找到。

$This
在概念脚本属性或脚本方法的脚本块中,$This 变量援用要增添的指标。

$True
饱含 TRUE。能够在指令和本子中行使此变量表示 TRUE。