<Power Shell>13 powershell三个实用特性和功能实例

简介:

昨天:周六和的今天周日的合在一起了,最近Cantgis比较忙。。。

管道绑定参数绑定到脚本区

我看到许多的PowerShell对堆栈溢出 看起来类似下面:

1
2
3
Get-ChildItem  *.txt |  Foreach  {
    Rename-Item  -Path  $_  -NewName  "$($_.basename).bak"
}

上面使用的foreach对象cmdlet是不必要的,因为“重命名”项目接受管道输入路径和新名称参数。

下面的例子大家可以看到结果

1
2
3
4
5
PS>  $obj  New-Object  PSObject –Property `
            @{Path= 'C:\Users\Cantgis\foo.txt' ;NewName= 'bar.txt' }
PS>  $obj  Rename-Item  –WhatIf
What  if : Performing operation  "Rename File"  on Target
"Item: C:\Users\Cantgis\foo.txt Destination: C:\Users\Cantgis\bar.txt" .

你也许会想,虽然这可能是一个有趣的问题,但是它是如何对比早期的powershell版本的呢?

如果使用foreach对象会更好吗?
powershell有一个诀窍来帮助我们实现这个重命名操作。
诀窍是,PowerShell将接受任何参数是管道的约束,脚本调用的脚本区的一段。

你可以看到,如果一个参数是通过获取帮助,例如管道绑定:

1
2
3
4
5
6
7
8
9
10
11
12
PS>  Get-Help  Rename-Item
...
-LiteralPath
     ...
     Accept pipeline input? true (ByPropertyName)
-Path
     ...
     Accept pipeline input? true (ByValue, ByPropertyName)
-NewName
     ...
     Position ?                    2
     Accept pipeline input? true (ByPropertyName)


上面的信息告诉我们,LiteralPath:路径和新名称的参数接受管道输入。
Get-ChildItem:管道输出,重命名项:cmdlet LiteralPath参数。
我们可以使用脚本区结合这个诀窍来指定新名称。

1
PS>  Get-ChildItem  *.txt |  Rename-Item  -NewName  { "$($_.BaseName).bak" }

使用PowerShell 3.0 输出GridView的多重选择

在PowerShell 3.0的更新GridView的命令支持PassThru参数。

此外,OUT-GridView控件支持多选的项目传入以及取消操作。

例如,你可能想从列表中选择进程停止。

1
2
3
PS>  Get-Process  devenv |
     Select Name,Id,MainWindowTitle |
     Out-GridView  -PassThru  Stop-Process


此命令显示出GridView的对话框,如下图所示。

我们可以看到基于MainWindowTitle属性的Visual Studio实例。

我可以选择一个或多个devenv的进程。

如果我按“确定”,然后我选择的进程将被停止。

如果我按出GridView的对话框上的取消按钮,停止管道,也没有进程被停止哦!

220440218.png


使用PowerShell社区的扩展的命令来显示树视图_关于供应商的

提示:如果需要可以下载免费的PowerShell社区扩展模块(PSCX)。

PSCX是一组通用的PowerShell命令。它提供的命令之一是显示树,基于PowerShell驱动器,如:

  • WSMan:\

  • Cert:\

  • HKLM:\

  • IIS:\ (if you have imported the WebAdministration module)



通常情况下,如果你想查找的驱动器,你可以使用Windows资源管理器。

不幸的是,除了那些基于文件系统上的,剩下的Windows资源管理器比不上可视性PowerShell驱动器

同样不幸的是,像WSMAN驱动器和IIS:即所包含的功能是不是很发现,隐藏了很多功能。

这时这个社区提供的扩展模块命令,生成显示树是非常方便的。

它可以在PowerShell驱动器,来显示文件系统结构在控制台显示的信息。

例如,下面是在IIS上运行显示树的输出示例:\驱动器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PS>  Show-Tree  IIS:\  -Depth  3
IIS:\
├──AppPools
│  ├──ASP.NET v4.0
│  │  └──WorkerProcesses
│  ├──ASP.NET v4.0 Classic
│  │  └──WorkerProcesses
│  ├──Classic .NET AppPool
│  │  └──WorkerProcesses
│  └──DefaultAppPool
│     └──WorkerProcesses
├──Sites
│  └── Default  Web Site
│     ├──aspnet_client
│     └──Blog
└──SslBindings

在一般情况下,在PowerShell驱动器执行条件,可以是容器也可以是项目。

我们在上面看到的仅是容器项目

例如,在项目属性为默认应用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
PS>  Show-Tree  IIS:\AppPools\DefaultAppPool  -ShowProperty
IIS:\AppPools\DefaultAppPool
├──Property: applicationPoolSid = S-1-5-82-3006700770-424185619-1745488364-7...
├──Property: Attributes = Microsoft.IIs.PowerShell.Framework.ConfigurationAt...
├──Property: autoStart = True
├──Property: ChildElements = Microsoft.IIs.PowerShell.Framework.Configuratio...
├──Property: CLRConfigFile =
├──Property: cpu = Microsoft.IIs.PowerShell.Framework.ConfigurationElement
├──Property: ElementTagName = add
├──Property: enable32BitAppOnWin64 = False
├──Property: enableConfigurationOverride = True
├──Property: failure = Microsoft.IIs.PowerShell.Framework.ConfigurationElement
├──Property: ItemXPath = /system.applicationHost/applicationPools/add[ @name =...
├──Property: managedPipelineMode = Integrated
├──Property: managedRuntimeLoader = webengine4.dll
├──Property: managedRuntimeVersion = v2.0
├──Property: Methods = Microsoft.IIs.PowerShell.Framework.ConfigurationMetho...
├──Property: passAnonymousToken = True
├──Property: processModel = Microsoft.IIs.PowerShell.Framework.Configuration...
├──Property: queueLength = 1000
├──Property: recycling = Microsoft.IIs.PowerShell.Framework.ConfigurationEle...
├──Property: Schema = Microsoft.IIs.PowerShell.Framework.ConfigurationElemen...
├──Property: startMode = OnDemand
├──Property: state = Started
├──Property: workerProcesses = Microsoft.IIs.PowerShell.Framework.Configurat...
└──WorkerProcesses
...



这样来使用扩展模块命令的IIS:\驱动器可以显示更多的信息,如托管PipelineMode使用以及使用哪个版本的、NET运行时,它的应用程序池是什么?。

有了这个信息我们变得更容易弄清楚如何更改这些设置:

1
PS>  Set-ItemProperty  IIS:\AppPools\DefaultAppPool managedRuntimeVersion v4.0


好了今天cantgis把周末的博文补上啦,我们明天再会。。





     本文转自cantgis 51CTO博客,原文链接:http://blog.51cto.com/cantgis/1236121 ,如需转载请自行联系原作者



相关文章
|
28天前
|
存储 监控 Shell
【Shell 命令集合 磁盘管理 】Linux 关闭磁盘配额功能 quotaoff命令使用教程
【Shell 命令集合 磁盘管理 】Linux 关闭磁盘配额功能 quotaoff命令使用教程
27 1
|
28天前
|
存储 Shell Linux
【Shell 命令集合 磁盘管理 】Linux 启用指定文件系统上的磁盘配额功能 quotaon 命令使用教程
【Shell 命令集合 磁盘管理 】Linux 启用指定文件系统上的磁盘配额功能 quotaon 命令使用教程
31 1
|
27天前
|
存储 Shell Linux
【Shell 命令集合 系统设置 】Linux 显示或设置键盘按键与其相关的功能 bind命令 使用指南
【Shell 命令集合 系统设置 】Linux 显示或设置键盘按键与其相关的功能 bind命令 使用指南
37 0
|
1月前
|
Java 关系型数据库 MySQL
Java调用shell脚本实现数据库备份功能
本篇文章主要介绍怎样使用Java程序,执行服务器上的数据库备份Shell脚本进行MySQL数据库的备份功能。
|
4月前
|
存储 Unix Shell
Linux【脚本 04】Shell脚本传递参数的4种方式(位置参数、特殊变量、环境变量和命名参数)实例说明
Linux【脚本 04】Shell脚本传递参数的4种方式(位置参数、特殊变量、环境变量和命名参数)实例说明
173 0
|
4月前
|
关系型数据库 MySQL Java
PowerShell【实例 01】-replace替换字符串及特殊字符处理(括号+百分号%)及utf8bom格式问题处理
PowerShell【实例 01】-replace替换字符串及特殊字符处理(括号+百分号%)及utf8bom格式问题处理
47 0
|
4月前
|
关系型数据库 MySQL Shell
百度搜索:蓝易云【Shell脚本实现Mysql持续kill功能】
将以上代码保存为一个名为 `kill_mysql.sh`的文件,并确保该文件具有执行权限(可以使用 `chmod +x kill_mysql.sh`命令赋予执行权限)。然后在终端中运行该脚本即可实现MySQL的持续kill功能。
49 0
|
6月前
|
Shell Linux Go
《Linux操作系统编程》第七章 shell的交互功能: 了解shell的启动过程,shell的功能,shell的命令形式,shell程序的建立和运行,理解管道和重定向,环境变量和系统变量以及变量引用
《Linux操作系统编程》第七章 shell的交互功能: 了解shell的启动过程,shell的功能,shell的命令形式,shell程序的建立和运行,理解管道和重定向,环境变量和系统变量以及变量引用
45 0
|
8月前
|
Shell
shell脚本确定目的和功能详情
shell脚本确定目的和功能详情
39 1
|
8月前
|
Shell
shell中正则表达式中字符的应用具体实例以及详解
shell中正则表达式中字符的应用具体实例以及详解
94 3