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