PowerShell: Windows PowerShell扩展

1. PowerShell管理单元(Snap-in): Windows PowerShell管理单元是被编译成DLL文件的.NET程序,包括提供程序、cmdlet和函数。Windows PowerShell包含一些内置的管理单元,同时我们也可以自己手动添加自己写的管理单元

Windows PowerShell V2内置管理单元包括:Microsoft.PowerShell.Core, Microsoft.PowerShell.Host, Microsoft.PowerShell.Management, Microsoft.PowerShell.Security, Microsoft.PowerShell.Utility, Microsoft.PowerShell.Diagnostics, Microsoft.PowerShell.WSMan.Management

查看计算机中的管理单元:get-pssnapin

查看每个Windows PowerShell提供程序所属的管理单元:get-psprovider | format-list name,pssnapin

查看某个管理单元中的cmdlet:get-command -module <snap-in_name>

对于内置的管理单元,每次启动Windows PowerShell时会被自动添加到会话中来。而对于我们自己写的或者从别的地方得到的管理单元,则需要首先注册这些管理单元然后再将他们添加到会话中来,"get-pssnapin -registered"命令可以用来查看你系统中注册过的管理单元,那么如何来注册管理单元呢?可以参考http://msdn.microsoft.com/en-us/library/ms714644(VS.85).aspx

将一个管理单元添加到当前对话:add-snapin <snap-in_name>

将一个管理单元移除出当前对话:remove-snapin <snap-in_name>

将管理单元添加到当前对话中后,管理单元只在当前会话中可用,如果我们想要在将来的会话中继续使用此管理单元,我们需要将它添加到配置文件中,首先将管理单元保存到一个控制台文件(.psc1),然后在需要使用此管理单元时用这个控制台文件启动PowerShell。

保存到控制台文件:export-console <consolefile_name>

使用控制台文件启动PowerShell:powershell.exe -psconsolefile <consolefile_name>

2. Windows PowerShell提供程序(providers)提供的数据显示在一个驱动器中,可以像浏览硬盘一样浏览该驱动器,并且允许查看、查找和管理相关的数据。

PowerShell内置的提供程序:Alias, Certificate, Environment, FileSystem, Function, Registry, Variable, WSMan.

列出所有可用的提供程序: get-psprovider

获得一个提供程序驱动器的所有属性:get-psdrive <drive_name(e.g.hklm)> | format-list *

查看驱动器的内容:get-childitem <drive_name>:\childitem

举例:get-childitem hklm:\software

进入驱动器:set-location <drive_name>:

3. Windows PowerShell模块(module): 模块包含了若干Windows PowerShell命令。比如cmdlets,提供程序(Providers),函数(functions),变量(variables),别名(aliases)。

Windows PowerShell模块是独立的、可重用的执行单元,可以包括以下内容:

  • 通过.PSM1文件调用的脚本函数;
  • 被编译成.DLL文件并且通过.PSD1调用的.NET组件;
  • 通过.DLL调用的PowerShell管理单元;
  • 在.PS1XML文件中描述的自定义视图和数据类型。

使用模块需要执行以下任务:

  1. 安装模块

如果当前用户没有模块文件夹为当前用户创建模块文件夹:new-item -type directory -path $home\Documents\WindowsPowerShell\Modules

将整个要安装的模块文件夹copy到上面的文件夹中

我们可以将模块安装到任意文件夹,但为了便于管理,建议安装到默认文件夹。

获取已安装的模块:get-module -listavailable

获取当前会话中导入的模块:get-module

  1. 将模块导入到Windows PowerShell会话

导入默认模块路径的模块:import-module <module_name>

导入非默认路径的模块时要将模块的完整路径输入,例如,导入c:\ps-test文件夹下的TestModules模块:

Import-module c:\ps-test\TestModules

将所有模块导入到当前会话中:

对于Windows7和Windows Server 2k8 R2,只需要右击任务栏上的powershell图标,然后选择"Import all modules"即可

对于其他版本的Windows操作系统,可以这样导入:get-module -listavailable | import-module

移除模块:remove-module <module_name>

  1. 找到模块添加的命令

Get-command -module <module_name>

  1. 使用模块添加的命令

模块默认路径包括两种,system和current user

System: $pshome\Modules

(%windir%\System32\WindowsPowerShell\v1.0\Modules)

Current user: $home\Documents\WindowsPowerShell\Modules

(%UserProfile%\Documents\WindowsPowerShell\Modules)

- or -

$home\My Documents\WindowsPowerShell\Modules

(%UserProfile%\My Documents\WindowsPowerShell\Modules)

查看模块默认路径: $env:psmodulepath

添加模块默认路径:$env:psmodulepath = $env:psmodulepath + ";<path>"

原文地址:https://www.cnblogs.com/ITGirlXiaoXiao/p/2637753.html