Powershell - 脚本

Windows PowerShell是命令行shell 脚本语言,专为系统管理而设计.它在Linux中的类比称为Bash Scripting. Windows PowerShell构建于.NET Framework之上,可帮助IT专业人员控制和自动管理在Windows Server环境中运行的Windows操作系统和应用程序.

Windows PowerShell命令,称为 cmdlet ,让您从命令行管理计算机. Windows PowerShell提供程序允许您像访问文件系统一样轻松访问数据存储,例如注册表和证书存储.

此外,Windows PowerShell具有丰富的表达式解析器和完整的开发脚本语言.因此,简单来说,您可以完成使用GUI执行的所有任务等等. Windows PowerShell脚本是一种完全开发的脚本语言,具有丰富的表达式解析器/

功能

  • Cmdlet :  Cmdlet执行常见的系统管理任务,例如管理注册表,服务,进程,事件日志和使用Windows Management Instrumentation(WMI).

  • 面向任务 :  PowerShell脚本语言是基于任务的,并为现有脚本和命令行工具提供支持.

  • 一致的设计 : 由于cmdlet和系统数据存储使用通用语法并具有通用命名约定,因此数据共享很容易.一个cmdlet的输出可以通过管道传输到另一个cmdlet而无需任何操作.

  • 简单易用 : 简化的基于命令的导航允许用户在注册表和其他数据存储中导航,类似于文件系统导航.

  • 基于对象&减去; PowerShell拥有强大的对象操作功能.对象可以直接发送到其他工具或数据库.

  • 可扩展接口. :  PowerShell可作为独立软件供应商进行定制,企业开发人员可以使用PowerShell构建自定义工具和实用程序来管理其软件.

变量

PowerShell变量是命名对象.由于PowerShell使用对象,因此这些变量用于处理对象.

创建变量

变量名应以$开头,并且可以包含字母数字字符并以他们的名字加下划线.可以通过键入有效的变量名来创建变量.

在PowerShell ISE控制台中键入以下命令.假设你在D:\ test文件夹中.

$ location = Get-Location

这里我们创建了一个变量$ location并为其分配了Get-Location cmdlet的输出.它现在包含当前位置.

使用变量

在PowerShell ISE控制台中键入以下命令.

$ location

输出

您可以在PowerShell中看到以下输出控制台.

Path 
 ---- 
 D:\ test

获取变量的信息

Get-Member cmdlet可以告诉正在使用的变量的类型.请参阅下面的示例.

$ location | Get-Member

输出

您可以在PowerShell控制台中看到以下输出.

TypeName: System.Management.Automation.PathInfo

Name          MemberType   Definition                                               
----          ----------   ----------                                               
Equals        Method       bool Equals(System.Object obj)                           
GetHashCode   Method       int GetHashCode()                                        
GetType       Method       type GetType()                                           
ToString      Method       string ToString()                                        
Drive         Property     System.Management.Automation.PSDriveInfo Drive {get;}    
Path          Property     System.String Path {get;}                                
Provider      Property     System.Management.Automation.ProviderInfo Provider {get;}
ProviderPath  Property     System.String ProviderPath {get;}