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