powershell

http://www.pstips.net/java

powershell版本shell

若是您的系统是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了。windows

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”。ide

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"ui

====================spa

cmdlets是Powershell的内部命令,cmdlet的类型名为System.Management.Automation.CmdletInfo,包含下列属性和方法:.net

dir alias: | where {$_.Definition.Startswith("Remove")}

dir alias:获取的是别名的数组,经过where对数组元素进行遍历,$_表明当前元素,alias的Definition为String类型,由于powershell支持.net,.net中的string类有一个方法Startswith。经过where过滤集合在powershell中使用很是普遍。

====================

 

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.LocalRunspacePS C:\Users\flt> Get-HostName             : ConsoleHostVersion          : 4.0InstanceId       : ec93e349-4833-4185-8f3d-8d365af04d70UI               : System.Management.Automation.Internal.Host.InternalHostUserInterfaceCurrentCulture   : zh-CNCurrentUICulture : zh-CNPrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxyIsRunspacePushed : FalseRunspace         : System.Management.Automation.Runspaces.LocalRunspacePS C:\Users\flt> Get-Host|Select-Object NameName----ConsoleHost 
相关文章
相关标签/搜索