PowerShell: 入门

From:Wrox_-Professional_Windows_PowerShell(2008)

PowerShell 是基于.Net Framework2.0 的,另外它在一个运用到另一个运用中传递的是对象(.Net Framework 对象)而不是字符串或文本。

在运行时可通过 get-member 命令获取.Net 类的成员。PowerShell 也提供语法允许利用.net FrameWork2.0 类的静态成员,例如$now=[System.DateTime]::Now. 为了调用.net framework 的静态类成员,需要将类名有方括号括起来,用两个冒号指定需要的属性名或静态方法。

PowerShell 提供get-wmiobject 命令,允许获取机器状态信息。 例如get-wmiobject Win32-currentTime 可返回当前使用WMI 的日期和时间。还可以运用WMI 访问远端机器(核心的Powershell 命令只能访问本地机器)

Windows PowerShell team 的目标是下一代的微软管理控制台(MWC3.0) , PowerShell 命令之上的图形化用户接口。

-Whatif 参数可让你看见当命令执行时将发生什么,用此参数可防止不必要的系统损坏。

Where-object 用于过滤对象,sort-object 用于排序对象

PowerShell 有两个命令Start-transcript,Stop-transcript 。可用于将在命令行中输入的命令和显示的相关信息copy 到指定的文件中。

在 Powershell 中几个数据存储都作为Dirve ,比如files, folders, registry, aliases, cerfificates, environment variables, functions… get-psdrive 命令可返回所有系统中定义的drive 。另一个方法是get-psprovider. 由于注册表也是作为drive 使用,可像文件系统那样导航。Set-location, 设置当前位置,比如 set-location HKLM: , 也可用命令cd HKLM: , 设置当前位置是HKEY_LOCAL_MACHINE.

当起路径保存在 $pwd 中。 Dir 命令等同于get-childitem 可返回指定路径下符合查询条件的文件

Active Directory provider

在以前的版本中有但是PowerShell1.0 中给去掉了,可能在以后的版本中还会出现。现在可以用.Net Framework2.0 相关类来呈现或维护Active Directory 。例如$AD=new-object System.DirectoryServices.DirectoryEntry

证书( Certificates )在PowerShell 中用cert drive 呈现证书信息。证书有层次结构,例如CurrentUser, LocalMachine 。PowerShell 为drives 提供一套统一的参数,但是一些特殊情况也有自己的参数,比如Certificate 有codesigning 参数而其它的就没有。

可以用 new-alias 自定义别名,用get-alias 获取当前的别名信息。

在未来的 PowerShell 版本上,COM 将用越来越少。WMI 对象可弥补PowerShell 对访问远程文件的缺陷。

通配符

?           指点位置精确匹配一个字符.

*           匹配0 到多个字符.

[abc]     匹配一类字符. 方括号中的任意字符出现就算匹配

[a-c]     匹配一定范围的字符. 如果连字符前的字符与连字符后面字符之间的字符出现就算匹配

 

自动变量

Variable Description描述
$$Contains the last token received from the last line of code received by the command shell.保存最后一个从最后一个代码行接收到的token
$? Contains the success/fail status of the last operation carried out by the command shell. Holds the boolean value True or False.保存最后一个操作执行后的成功或失败状态,Ture/False
$^Contains the first token received from the last line of code received by the command shell.保存第一个从最后一个代码行接收的token
$_Contains the current pipeline object. Used by the where-object cmdlet, for example.保存当前的pipeline对象,例如where-object命令使用
$ArgsAn array of the parameters, not explicitly defined by name, passed to a function.参数数组,没有特别地用名字指定传到函数
$ConfirmPreferenceSpecifies what to do before PowerShell carried out an action that has side effects.指定Powershell执行一个有副作用的动作前做什么
$ConsoleFileNameThe name of the current console file.当前的console文件名
$DebugPreferenceSpecifies the debugging policy.指定debuging策略
$ErrorAn array of error objects.错误对象数组
$ErrorActionPreferenceSpecifies how errors are to be responded to.指定错误如何响应
$ErrorViewSpecifies the mode for displaying errors.指定显示错误的方式
Variable Description描述
$ExecutionContextSpecifies the execution objects available to cmdlets.指定对cmdlet有效的执行对象
$FalseThe boolean value False.布尔值False
$FormatEnumerationLimitSpecifies the limit on the enumeration of IEnumerable objects.指定列举接口对象的列举限制
$HomeSpecifies the home directory for the current user.指定当前用户的主目录
$HostContains information about the PowerShell console.保存PowerShell console的信息
$InputSpecifies the input to a script block in a pipeline.指定一个pipeline中脚本段的输入
$MaximumAliasCountSpecifies the maximum number of aliases allowed.指定允许的Alias最大数
$MaximumDriveCountSpecifies the maximum number of drives allowed.指定允许的drive最大数
$MaximumErrorCountSpecifies the maximum number of errors stored in the $Error array.指定允许的存储在Error数组中的error最大数
$MaximumFunctionCountSpecifies the maximum number of functions allowed in a session.指定一个session中最大函数数
$MaximumHistoryCountSpecifies the maximum number of PowerShell commands stored in history.指定Powershell命令最大历史保存数
$MaximumVariableCountSpecifies the maximum number of variables available in a session.指定一个session中最大变量数
$MyInvocationContains information about how a script was called.保存一个脚本如果调用信息
$NestedPromptLevel The level of nesting of a PowerShell prompt. The level is 0 for the outermost shell.PowerShell提示的嵌套级别。级别是0到最外层
$nullThe NULL value.空值
$PIDThe process ID for the PowerShell process.$pi. 
$Profile The location of a user’s profile file (Profile.ps1).用户profile文件位置
$ProgressPreference Specifies the action taken when progress records are delivered.当progress记录deliver时应采取的行动
$PSHome The directory that PowerShell is installed into.PowerShell的安装目录
$PWDThe current (or present) working directory.当前的工作目录
Variable Description描述
$ReportErrorShow InnerExceptionWhen set to TRUE (1) causes the chain of inner exceptions to be  displayed.设置为True(1)时显示异常的内部链
$ReportErrorShowSourceWhen set to TRUE (1) causes the assembly names of exceptions to be displayed.设置为True(1)时显示异常的assemble名
$ReportErrorShowStackTraceWhen set to TRUE (1) causes the stack trace for exceptions to be  displayed.设置为True(1)时显示异常的stack trace
$ShellIdName of the PowerShell shell running (default is Microsoft.PowerShell.Shell运行的名
$True The boolean value TRUE. 
$VerbosePreference Specifies the action to take when the write-verbose cmdlet is used in a script to write data.当write-verbose cmdlet在脚本中使用时指定的动作
$WarningPreference Specifies the action to take after text is written using the writewarning cmdlet.当用writewarning cmdlet用于写文本完成后采取的动作
$WhatIfPreference Specifies whether or not –whatif is enabled for all command指定-whatif是否对所有命令启用

1

 

代码交流 2021