[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[转载教程] 【探索PowerShell 】【二】基本操作

【探索PowerShell 】【一】初识http://www.bathome.net/thread-26144-1-1.html
【探索PowerShell 】【二】基本操作http://www.bathome.net/thread-26148-1-1.html
【探索PowerShell 】【三】PowerShell下使用Aliaseshttp://www.bathome.net/thread-26149-1-1.html
【探索PowerShell 】【四】PowerShell的对象、格式与参数http://www.bathome.net/thread-26159-1-1.html
【探索PowerShell 】【五】PowerShell基础知识http://www.bathome.net/thread-26162-1-1.html
【探索PowerShell 】【六】脚本基础简要http://www.bathome.net/thread-26163-1-1.html
【探索PowerShell 】【七】变量http://www.bathome.net/thread-26165-1-1.html
【探索PowerShell 】【八】数组、哈希表(附:复制粘贴技巧)http://www.bathome.net/thread-26166-1-1.html
【探索PowerShell 】【九】条件控制、逻辑http://www.bathome.net/thread-26167-1-1.html
【探索PowerShell 】【十】循环语句http://www.bathome.net/thread-26168-1-1.html
【探索PowerShell 】【十一】函数http://www.bathome.net/thread-26174-1-1.html
【探索PowerShell 】【十二】筛选器 - Filtershttp://www.bathome.net/thread-26187-1-1.html
【探索PowerShell 】【十三】WMI对象http://www.bathome.net/thread-26188-1-1.html
【探索PowerShell 】【十四】使用WMI对象的方法http://www.bathome.net/thread-26189-1-1.html
【探索PowerShell 】【十五】引号与转义字符http://www.bathome.net/thread-26190-1-1.html

PowerShell控制台

打开PowerShell,显示如下界面:
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.

PS D:\>


命令提示符前缀为:
PS D:\>


PS的意思为正在运行PowerShell中,而C:则是我的主目录驱动器号,不同机器会有所不同。

最最最基本的操作与cmd、dos、sh等相同。

cmdlet命令

虽然有超过一百条新的PowerShell命令需要去学习,但是,与大多数命令行界面一样,PowerShell命令已经被标准化。它使用“动词-名词”的命名形式作为一个cmdlet命令。该标准大大降低了学习难度,并且对所有cmdlet命令提供了更好的描述性帮助。

要查看当前PowerShell中所有的cmdlet,使用如下命令:
  1. get-command
复制代码
PS D:\> get-command

CommandType     Name                                                Definition
-----------     ----                                                ----------
Alias           %                                                   ForEach-Object
Alias           ?                                                   Where-Object
Function        A:                                                  Set-Location A:
Alias           ac                                                  Add-Content
Cmdlet          Add-Computer                                        Add-Computer [-DomainName] <String> [-Credential...
Cmdlet          Add-Content                                         Add-Content [-Path] <String[]> [-Value] <Object[...
...


接下来,让我们使用特定的动词列出所有的命令。下面是使用动词"Get“筛选后的cmdlet:
  1. get-command -Verb Get
复制代码
PS D:\> get-command -Verb Get

CommandType     Name                                                Definition
-----------     ----                                                ----------
Cmdlet          Get-Acl                                             Get-Acl [[-Path] <String[]>] [-Audit] [-Filter <...
Cmdlet          Get-Alias                                           Get-Alias [[-Name] <String[]>] [-Exclude <String...
Cmdlet          Get-AuthenticodeSignature                           Get-AuthenticodeSignature [-FilePath] <String[]>...
Cmdlet          Get-ChildItem                                       Get-ChildItem [[-Path] <String[]>] [[-Filter] <S...
...


其他命令同样可以使用这种筛选方法。这样子组合之后,上百条命令就很好记忆了。

简单举例其他基本常用命令:
  1. get-help
复制代码
  1. get-help *
复制代码
  1. get-service
复制代码
  1. get-help get-service
复制代码
试试下列按键吧,看看会发生什么:

Page Up - 跳转到历史缓冲区中的第一个命令。
Page Down - 跳转到历史缓冲区中的最后一个命令。
UpArrow - 向后显示历史缓冲区命令。
DownArrow - 向进显示历史缓冲区命令。
Home - 跳跃到命令行的开头。
End - 跳跃到命令行的末尾。
Ctrl + LeftArrow - 到最左侧字符。
Ctrl + RightArrow - 到右侧单词结尾。
Tab - 完成输入(在控制台中键入GET - C和按TAB键,再按下Tab试试)。
F7键 - 显示历史缓冲区(使用向上和向下箭头键来浏览缓冲区)。
或者在别的窗口复制一段文字,在PowerShell上按鼠标右键试试,类似于sh下的鼠标中键的作用。

在PowerShell命令中,还有一类被称之为“原生窗口命令”。例如我们可以从PowerShell命令行启动services.msc的GUI窗口。
  1. services.msc
复制代码
既然我们使用PowerShell,那么就可以无视services.msc了。

下列是对服务进行操作的命令<以Brower服务为例>:
  1. get-service -name Browser
  2. stop-service -name Browser
  3. get-service -name Browser
复制代码
PS D:\> get-service -name Browser

Status   Name               DisplayName
------   ----               -----------
Stopped  Browser            Computer Browser


需要注意的是:在使用cmdlet停止服务时不会有任何迹象来向用户告知该服务已经成功停止的。

同样,启动服务命令:
  1. start-service -name Browser
复制代码
启动服务后也不会有任何反馈性迹象表明服务正常启动,除非服务启动失败。

这一段的命令就简单介绍到这里,是不是很简单?只需要记着“动词-名词”这一形式就可以了!

下面贴出PowerShell中的基本运算语法示例

PS C:\> 99 + 100
199


在PowerShell中,可以非常简单的进行数学运算,你所要做的仅仅是输入表达式这么简单,结果就会自动输出,在此过程中不需要使用其他shell中的打印语句等,运算结束后得到的执行结果也不会被随意丢弃掉,而是直接输出,往后我们会学习如何将结果进行丢弃。

PS C:\> "Hello World!"
Hello World!


"Hello World”,就像上面的数学计算,直接输入字符串即可。使用过Perl脚本的会觉得这里很熟悉,因为PowerShell很大程度上借鉴了Perl的优点。

PS C:\> (7 - 2 * 3) / 5
0.2



对于四则混合运算,PowerShell也能很好的支持。在表达式中可以使用( )来调整运算符的优先级和结合性。需要注意的是,PowerShell支持若干种不同的数据类型,例如:int、float、double等等。往后我们会接触到类型转换等内容。

PS C:\> (2+2)*3/7 > c:\fun.txt
PS C:\> type c:\fun.txt
1.71428571428571


同样,除了屏幕输出外,我们可以将结果存储到临时文件,然后使用type命令将文件的结果取回。

PS C:\> $n = (2+2)*3
PS C:\> $n
12
PS C:\> $n / 7
1.71428571428571


另外,我们还可以通过对变量赋值,将运算结果存储到变量中,并使用该变量进行后续的计算。

PS C:\> $files = dir
PS C:\> $files[3]

PS C:\> $files = dir
PS C:\> $files[3]
    Directory: Microsoft.PowerShell.Core\FileSystem::C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d-r-- 2010-3-26 21:25 Program Files


作为一个面向对象的语言,我们可以简单的将命令返回的结果赋值给变量。这里的$files中包含了目前所处目录下的目录项的对象集合,使用普通数组访问语法就可以获得该位置的对象。例子中显示了Program Files目录。注意:PowerShell中的数组下标是从0开始的,这点与.Net Common Language Runtime完全一致。

这一节就到这里。有兴趣的童鞋可以继续关注下一节内容。

本文出自 “马睿的技术博客” 博客,请务必保留此出处http://marui.blog.51cto.com/1034148/289837

返回列表