windows PowerShell脚本学习
阅读数:344 评论数:0
跳转到新版页面分类
应用软件
正文
一、概述
在windows中,cmd和powershell都是命令执行窗口,powershell从win7开始内置于windows系统中,可以看作是cmd的增强。
为了兼容unix/linux shell(主要是bash)的命令;powershell中提供了一套别名机制来兼容cmd和bash命令。
按住shift同时点击鼠标右键,在弹出的菜单中可以选择打开powershell,这里会直接进入鼠标所点击的文件夹。
1、powershell对大小写不敏感。
2、使用$符号定义变量。
二、使用
(1)Alt+F7 : 清除命令,相当于cls
(2)esc: 清空当前命令行。
(3)tab:自动补全命令
get-process p* | stop-process
(1)>:表示输出到某个文件,覆盖文件原有的内容,如果文件不存在则自动创建。
(2)>>:表示添加到某文件内容的结尾。
(3)行模式显示(属性和值在同一行),格式化输出 fl:format list
# 查看域用户信息,结果按行显示
Set-ExecutionPolicy Bypass
Import-Module PowerView.ps1
Get-NetUser | fl name,lastlogon,distinguishedname
(4)表格模式显示,格式化输出 ft: format table。
# 查看域用户信息,结果按表格显示
Set-ExecutionPolicy Bypass
Import-Module PowerView.ps1
Get-NetUser | ft name,lastlogon,distinguishedname
(1)netstat -ano: 查看端口信息。
(2)ipconfig: 查看网络配置信息。
(3)route print:打印路由信息。
(4)&"command": 打开powershell外部命令。
(5)$env:path: 输出path环境变量的内容。
(6)$env:path=$env:path+"dir_path":临时添加path环境变量。
# 查看cmdlet、function、alias的帮助文档
Get-Help / help / man <String>
# 查看cmdlet、function、alias信息,支持通配符*匹配
Get-Command [[-Name] <String>]
# 查看进程信息,支持通配符*匹配
Get-Process / ps [[-Name] <String>]
# 查看当前会话中命令别名
Get-Alias [[-Name] <String>]
# 获取目录信息,Filter支持通配符*
Get-ChildItem / ls / dir [[-Path] <String>] [[-Filter] <String>]
# 获取当前目录位置
Get-Location / pwd
# 获取当前会话中的变量信息,支持通配符*
# 获取当前程序PID:Get-Variable PID
Get-Variable [[-Name] <String>]
# 获取服务,支持通配符*
Get-Service [[-Name] <String>]
# 获取当前会话的执行策略
Get-ExecutionPolicy
# 获取文件内容
Get-Content / type [-Path] <String>
# 为命令设置别名
Set-Alias [-Name] <Alias_String> [-Value] <String>
# 设置变量值
Set-Variable [-Name] <String> [[-Value] <Object>]
# 切换路径
Set-Location / cd [[-Path] <String>]
# 启动、停止、暂停服务
Set-Service [-Name] <System.String> [-Status {Paused | Running | Stopped}]
# 设置PowerShell命令执行策略
Set-ExecutionPolicy {AllSigned | Bypass | Default | RemoteSigned | Restricted | Undefined | Unrestricted}
# 将字符串当作命令在本地执行
Invoke-Expression / iex [-Command] <String> [<CommonParameters>]
# 新建.NET Framework对象
New-Object [-TypeName] <String>
# 新建文件/目录
# -Name:文件/目录名称
# -Path:文件/目录所在目录
# -Value:文件中的内容
# -Force:覆盖当前文件/目录
# -Confirm:需要交互式确认
# -ItemType包括:Directory、File、SymbolLink、Junction、HardLink
New-Item / mkdir -Name <String> [[-Path] <String>] [-Value <Object>] [-Force] [-Confirm] [-ItemType <String>]
# 复制文件/目录
Copy-Item [-Path] <String> [[-Destination] <String>]
# 复制文件/目录
Move-Item [-Path] <String> [[-Destination] <String>]
# 删除文件/目录
Remove-Item [-Path] <String>
# 重命名文件/目录
Rename-Item [-Path] <String> [-NewName] <String>
(1)$home:用户根目录路径。
(2)$pid: 当前界面进程ID。
(3)$$:上一个运行的命令。
(4)$?: 上一个命令运行的状态,返回布尔值。
(5)$_:当前变量
(6)$null: 空值、空变量。
三、powershell脚本
为防止恶意脚本,默认情况下策略为“不能执行”。
Get-Executionpolicy,返回Restricted表示禁止。
Set-Executionpolicy RemoteSigned:允许命令行运行PowerShell脚本
(1)Restricted:脚本不能运行(默认设置)
(2)RemoteSigned:在本地创建脚本可以运行,但从网上下载的不能(拥有数字证书签名除外)
(3)AllSigned:仅当脚本受信任的发布者签名才能运行。
(4)Urestricted:允许所有脚本运行。
(1)执行脚本
&"powershell_script_path"
(2)bat脚本调用powershell脚本
powershell "& 'powershell_script_path'"
四、使用示例
PS C:\Users\yyy> Get-WmiObject -Class Win32_LogicalDisk | select *
PS C:\Users\yyy> Get-WmiObject -Class Win32_LogicalDisk | select deviceid,size,freespace
deviceid size freespace
-------- ---- ---------
C: 209121701888 17412263936
D: 290391584768 37319020544