powershell

http://www.pstips.net/

powershell版本

如果您的系统是window7或者Windows Server 2008,那么PowerShell 2.0已经内置了,可以升级为3.0,4.0。
如果您的系统是Windows 8 或者Windows server 2012,那么PowerShell 3.0已经内置了,可以升级为4.0。
如果您的系统为Windows 8.1或者Windows server 2012 R2,那默认已经是4.0了。

http://www.microsoft.com/en-us/download/details.aspx?id=40855  Windows Management Framework 4.0

启动 Windows PowerShell ISE  Integrated Scripting Environment

在 Windows Vista、Windows Server 2008 和更高版本的 Windows 中,在“开始”菜单中,依次单击“开始”、“所有程序”、“附件”、“Windows PowerShell”文件夹和“Windows PowerShell ISE”项。
在 Windows XP 和 Windows Server 2003 中,若要启动 Windows PowerShell,请在“开始”菜单中依次单击“开始”、“程序”、“附件”、“Windows PowerShell”文件夹和“Windows PowerShell ISE”项。
在 Windows PowerShell 控制台、Cmd.exe 或“运行”框中,键入“powershell_ise.exe”。

PowerShell中没有文件的概念,只有项【Item】的概念,像Windows驱动器、目录、文件、注册表、变量等信息都被抽象成了"项"的概念,PowerShell使用"项"来进行统一管理。本次我们只关注文件系统,即目录、文件,其他系统后续篇章再做了解。
关于文件系统的命令有如下一些:
New-Item
Copy-Item
Move-Item
Remove-Item
Rename-Item
Invoke-Item
当然,这些命令不仅仅用于文件系统,像驱动器、注册表等都可以使用,本次我们只从文件系统的角度去关注这些命令。

执行powershell脚本
PowerShell[.exe] -Help | -? | /?

Restricted——默认的设置, 不允许任何script运行
AllSigned——只能运行经过数字证书签名的script
RemoteSigned——运行本地的script不需要数字签名,但是运行从网络上下载的script就必须要有数字签名
Unrestricted——允许所有的script运行
windows默认不允许任何脚本运行,你可以使用"Set-ExecutionPolicy"cmdlet来改变的你PowerShell环境。例如,你可以使用如下命令让PowerShell运行在无限制的环境之下:
PS C:\Users\flt\ps> Set-ExecutionPolicy Unrestricted
Set-ExecutionPolicy : 对注册表项“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell”的访问被拒绝。 要更改默认(LocalMachine)作用
域的执行策略,请使用“以管理员身份运行”选项启动 Windows PowerShell。要更改当前用户的执行策略,请运行 "Set-ExecutionPolicy -Scope CurrentUser"。
PS C:\Users\flt> Set-ExecutionPolicy Unrestricted -Scope CurrentUser
或者输入以下命令:runas /noprofile /user:Administrator cmd
但是我的管理员账号没有密码,无法切换到administrator权限,显示无法启动服务。
看来这种通过的方法对于没有设置管理员密码的电脑还是有点问题。

使用java调用powershell脚本,可以使用以下命令:
String cmd = "cmd /c powershell -ExecutionPolicy RemoteSigned -noprofile -noninteractive -file \""
+ scriptFilename + "\"";

一.最通常的运行脚本的方法是调用它:
PS C:\> & "C:\Belfry\My first Script.ps1"  
注意: 这里的"&"操作符能允许你调用一个命令, 脚本, 或函数. 比如:
如果路径不包含任何的空格, 那么你就可以忽略引号和'&'操作符.
PS C:\> C:\Belfry\Myscript.ps1
如果脚本就在当前路径下, 你必须使用符号".\"来告诉PowerShell该脚本就在当前路径下.
PS C:\> .\Myscript.ps1  

二.Dot Sourcing
当使用上面的语法执行脚本的时候, 脚本中定义的变量和函数会在脚本运行结束后消失。如果你使用dot sourcing来运行脚本的时候, 所有脚本中定义的变量和函数会在脚本运行结束后依然存在。
举例运行dot-sourcing脚本.
PS C:\> . "C:\Belfry\My first Script.ps1"  
PS C:\> . .\Myscript.ps1"

Powershell对象=属性+方法

在现实世界中,你可能已经了解对象就是那些能够摸到的东西。Powershell中的对象和现实生活很相似。例如要在现实生活中描述一把小刀。我们可能会分两方面描述它
属性:一把小刀拥有一些特殊的属性,比如它的颜色、制造商、大小、刀片数。这个对象是红色的,重55克,有3个刀片,ABC公司生产的。因此属性描述了一个对象是什么。
方法:可以使用这个对象做什么,比如切东西、当螺丝钉用、开啤酒盖。一个对象能干什么就属于这个对象的方法。


按Insert键设置命令行编辑模式为改写模式, 再按一次Insert键命令行返回插入模式. 当命令行处于改写模式, 你输入字符将会替代被光标高亮显示的字符. 当命令行处于插入模式(默认状态), 字符被插入到光标字符之前.
按Backspace键删除光标前一个字符(改写或插入模式). 改写模式中, 按Delete键删除高亮字符. 在插入模式, 按Delete键删除下一个字符.
按Tab键自动补全你输入的路径. 如果第一个现实的路径不是你期待的, 再一次按Tab知道正确的路径出现. 注意Tab键补全的路径只能是当前子目录中. 例如, 如果你输入了c:\ 然后按Tab键, 可选路径之一将会是c:\windows, 而不是c:\windows\system32. 要进入结构中的下个层次(译者注: 文件系统中就是子目录), 在选择的父目录后输入反斜杠, 然后按Tab键. 例如, 如果你一直按Tab直到看见c:\windows, 你可以在行尾输入一个反斜线, 然后继续按Tab键来遍历结构中的下一层.

今天为大家总结了在控制台的所有快捷键, 方便大家使用PowerShell. 实际上Cmd.exe或任何控制台都支持这些快捷键的.

按键

功能

光标向左移动一个字符

Ctrl + ←

光标向左移动一个单词

光标向右移动一个字符

Ctrl + →

光标向右移动一个单词

Home键

光标移动到行首

End键

光标移动到行尾

Delete键

删除光标指向的字符

Backspace键或Ctrl + H

删除光标左边第一个字符

Ctrl + End键

删除从光标到行尾的所有字符

Esc键

清除当前输入的所有字符

Insert键

插入与改写模式切换

Tab键

Tab键自动完成命令,例如:自动完成命令的名称、cmdlet命令的参数、路径。如果第一个提示的对象不是您期望的结果,继续输入Tab键,将会自动显示下一个候选对象。

向上查询历史命令

向下查询历史命令

F7键

显示命令历史记录,以图形列表窗的形式给出所有曾经输入的命令,并可用上下箭头键选择再次执行该命令。

F8键

搜索命令对应的历史记录,在命令上输入命令的一部分内容后,按F8键,可以得到匹配该输入的历史命令。如果有多个匹配项,重复按F8,可以循环显示所有曾经输入的命令。如果命令行为空,则默认匹配所有历史输入的命令。

F9键

按编号选择历史命令,以图形对话框方式要求您输入命令所对应的编号(从0开始),并将该命令显示在屏幕上。

Enter键或Ctrl + M

回车(Enter)

Ctrl + C

终止当前执行的命令

Ctrl + Break

终止当前执行的命令

Alt + F7键

清除所有曾经输入的命令历史记录

Powershell把所有环境变量的记录保存在env: 虚拟驱动中,因此可以列出所有环境变量 。一旦查出环境变量的名字就可以使用$env:name 访问了。

PS C:\Users\flt\ps> ls env:



Name                           Value

----                           -----

ALLUSERSPROFILE                C:\ProgramData

APPDATA                        C:\Users\flt\AppData\Roaming

CommonProgramFiles             C:\Program Files\Common Files

CommonProgramFiles(x86)        C:\Program Files (x86)\Common Files

CommonProgramW6432             C:\Program Files\Common Files

COMPUTERNAME                   FLT-NB

ComSpec                        C:\Windows\system32\cmd.exe



PS C:\Users\flt\ps> $env:APPDATA

C:\Users\flt\AppData\Roaming
PS C:\Users\flt\ps> dir a.ps|Format-List *


PSPath            : Microsoft.PowerShell.Core\FileSystem::C:\Users\flt\ps\a.ps
PSParentPath      : Microsoft.PowerShell.Core\FileSystem::C:\Users\flt\ps
PSChildName       : a.ps
PSDrive           : C
PSProvider        : Microsoft.PowerShell.Core\FileSystem
PSIsContainer     : False
VersionInfo       : File:             C:\Users\flt\ps\a.ps
                    InternalName:
                    OriginalFilename:
                    FileVersion:
                    FileDescription:
PS C:\Users\flt\ps> Get-Variable



Name                           Value

----                           -----

$                              *

?                              True

^                              Get-Variable

args                           {}

ConfirmPreference              High



PS C:\Users\flt\ps> Get-Variable|fl *|more



Name        : $

Description :

Value       : more

Visibility  : Public

Module      :

ModuleName  :

Options     : None

Attributes  : {}



Value       : False

Name        : ?

Description : 上一命令的状态

Visibility  : Public

Module      :

ModuleName  :

Options     : ReadOnly, AllScope

Attributes  : {}

 

 

cmd控制台与ps控制台

Microsoft Windows [版本 6.1.7601]

版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\flt>powershell

Windows PowerShell

版权所有 (C) 2009 Microsoft Corporation。保留所有权利。

PS C:\Users\flt>



例如通过ls获取当前目录的所有文件信息,然后通过Sort -Descending对文件信息按照Name降序排列,最后将排序好的文件的Name和Mode格式化成Table输出。

PS C:\Users\flt> ls | sort -Descending Name | Format-Table Name,Mode



Name                                                                            Mode

----                                                                            ----

Videos                                                                          d-r--

Searches                                                                        d-r--

Saved Games                                                                     d-r--

Roaming                                                                         d----

Desktop                                                                         d-r--

Contacts                                                                        d-r--

.vmrc_plugin_ovftool_settings.js                                                -a---



重定向

把命令的输出保存到文件中,‘>’为覆盖,’>>’追加。

PS C:\Users\flt\ps> "poweersheel" > a.txt

PS C:\Users\flt\ps> cat .\a.txt

poweersheel

PS C:\Users\flt\ps> "poweersheel" >>a.txt

PS C:\Users\flt\ps> cat a.txt

poweersheel

poweersheel



我们可以把powershell当成一个计算器。象键入命令行那样输入数学表达式,回车,powershell会自动计算并把结果输出。常用的加减乘除模(+,-,*,/,%)运算和小括号表达式都支持。

PS C:\Users\flt> 1+2+3

6

PS C:\Users\flt> 2/2

1

PS C:\Users\flt> 6/3

2

PS C:\Users\flt> 2*4

8

PS C:\Users\flt> 3%2

1

PS C:\Users\flt> 9%6

3

1gb/20mb*10kb

80kb*800*30/1gb

10GB/(80KB*5)/30



Microsoft Windows [版本 6.1.7601]

版权所有 (c) 2009 Microsoft Corporation。保留所有权利。



C:\Users\flt>powershell

Windows PowerShell

版权所有 (C) 2013 Microsoft Corporation。保留所有权利。



先看看$psversiontable,这个变量拆开来看就是ps-version-table,表示PowerShell中各组件的版本号列表。其中表示PowerShell自己的版本号(PSVersion),也包括.NET的版本号(CLRVersion),还有Windows版本号(BuildVersion)

PS C:\Users\flt> $psversiontable



Name                           Value

----                           -----

PSVersion                      4.0

WSManStackVersion              3.0

SerializationVersion           1.1.0.1

CLRVersion                     4.0.30319.18408

BuildVersion                   6.3.9600.16406

PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}

PSRemotingProtocolVersion      2.2



接下来看看$host变量,里面一个Version,表示PowerShell的版本号。

PS C:\Users\flt> $host



Name             : ConsoleHost

Version          : 4.0

InstanceId       : ec93e349-4833-4185-8f3d-8d365af04d70

UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface

CurrentCulture   : zh-CN

CurrentUICulture : zh-CN

PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy

IsRunspacePushed : False

Runspace         : System.Management.Automation.Runspaces.LocalRunspace
PS C:\Users\flt> Get-Host

Name             : ConsoleHost
Version          : 4.0
InstanceId       : ec93e349-4833-4185-8f3d-8d365af04d70
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : zh-CN
CurrentUICulture : zh-CN
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

PS C:\Users\flt> Get-Host|Select-Object Name

Name
----
ConsoleHost

你可能感兴趣的:(powershell)