PowerShell的Exit与Return

合集下载

powershell常用命令总结

powershell常用命令总结

powershell常用命令总结PowerShell是一种功能强大的脚本语言和命令行工具,旨在帮助用户自动化管理和配置Windows操作系统。

作为一名系统管理员或开发人员,熟练掌握PowerShell的常用命令是非常重要的。

在本文中,我将向你介绍一些最常用的PowerShell命令,并为你提供详细的步骤和示例。

首先,我们来了解一下PowerShell的优势。

与其他命令行工具相比,PowerShell 具有以下几个重要特点:1. 管道(Piping):允许将一个命令的输出作为另一个命令的输入,实现更高效的数据处理和操作。

2. 通用性:PowerShell可以管理和配置不仅仅是Windows操作系统,还包括其他Microsoft产品和第三方应用程序。

3. 面向对象:PowerShell是基于.NET框架的,支持面向对象的编程和操作,提供了丰富的类库和API。

4. 可扩展性:通过编写脚本和自定义模块,你可以轻松扩展和定制PowerShell 的功能。

在接下来的内容中,我们将学习一些常用的PowerShell命令,并分析它们的应用场景和用法。

一、基本命令1. Get-Command:获取所有可用命令或查询特定命令的信息。

例如,你可以使用“Get-Command”来获取PowerShell中所有的命令列表。

powershellGet-Command2. Get-Help:获取命令的使用帮助和文档。

在PowerShell中,你可以通过“Get-Help”命令来获取任何命令的详细说明。

powershellGet-Help Get-Process3. Set-Location和Get-Location:用于切换和获取当前目录。

这些命令与常用的cd和pwd命令类似。

powershellSet-Location C:\Windows\System32Get-Location4. Clear-Host:清除控制台窗口的内容,使其保持清洁。

二十,Powershell基础入门及常见用法(二)

二十,Powershell基础入门及常见用法(二)

二十,Powershell基础入门及常见用法(二)一.Powershell操作符常见的比较运算符包括:•-eq 等于•-ne 不等于•-gt 大于•-lt 小于•-le 小于等于•-contains 包含•-notcontains 不包含67 -eq 5050 -eq 501gb -gt 1tb(1,2,3) -contains 1(1,2,3) -contains 2(1,2,3) -contains 4求反运算符:•-not$a=89 -gt 50$a-not $a逻辑运算:•-and 与运算•-or 或运算•-not 非运算•-xor 异或运算$true -and $true$true -and $false$true -or $false$false -or $false-not $true$true -xor $true比较数组和集合,从中筛选出不等于0的数字。

1,5,8,0,9 -ne 0二.Powershell条件语句1.if条件判断if-elseif-else条件判断,执行操作用大括号表示。

$num=100if($num -gt 90) {'大于90'} else {'小于等于90'}if($num -gt 100) {'大于100'} else {'小于等于100'}注意,if-else中间可以增加新的判断elseif,如下所示:if($num -gt 100) {'大于100'} elseif ($num -eq 100) {'等于100'} else {'小于100'}2.switch语句Switch语句主要用于多种情况的判断,这里在本地创建一个test01.ps1文件,并执行该代码。

传统的if判断如下:$num=56if($num -gt 50 -and $num -lt 60) { '大于50并且小于60'} elseif ($num -eq 50) { '等于50'}else{ '小于50'} 去到桌面1019文件夹,输入“.\test01.ps1”执行代码,再打印该文件的源代码。

powershell所有命令公布解析

powershell所有命令公布解析

powershell所有命令公布解析powershell所有命令公布!Split-Path Cmdlet返回指定的路径部分。

Test-Path Cmdlet确定路径的所有元素是否存在。

Get-Process Cmdlet获取在本地计算机上运行的进程。

Stop-Process Cmdlet停止一个或多个正在运行的进程。

Remove-ItemProperty Cmdlet从注册表项中删除属性及其值。

Rename-ItemProperty Cmdlet 重命名项的属性。

Resolve-Path Cmdlet解析路径中的通配符并显示路径内容。

Get-Service Cmdlet获取本地计算机上的服务。

Stop-Service Cmdlet停止一个或多个正在运行的服务。

Start-Service Cmdlet启动一个或多个已停止的服务。

Suspend-Service Cmdlet挂起(暂停)一个或多个正在运行的服务。

Resume-Service Cmdlet恢复一项或多项挂起(暂停的)服务。

Restart-Service Cmdlet 停止并接着启动一个或更多服务。

Set-Service Cmdlet更改服务的显示名称、说明或启动模式。

New-Service Cmdlet在注册表和服务数据库中为Windows 服务创建新项。

Set-Content Cmdlet在项中写入内容或用新内容替换其中的内容。

Set-ItemProperty Cmdlet设置位于指定位置的属性的值。

Get-Acl Cmdlet获取资源(例如文件或注册表项)的安全描述符。

Set-Acl Cmdlet更改指定资源(例如文件或注册表项)的安全描述符。

Get-PfxCertificate Cmdlet获取计算机上 .pfx 证书文件的相关信息。

Get-Credential Cmdlet获取基于用户名和密码的凭据对象。

Get-ExecutionPolicy Cmdlet获取外壳程序的当前执行策略。

PowerShell命令

PowerShell命令

PowerShell命令[PowerShell]#别名ac = Add-Contentasnp = Add-PSSnapinclc = Clear-Contentcli = Clear-Itemclp = Clear-ItemPropertyclv = Clear-Variablecpi = Copy-Itemcpp = Copy-ItemPropertycvpa = Convert-Pathdiff = Compare-Objectepal = Export-Aliasepcsv = Export-Csvfc = Format-Customfl = Format-Listforeach = ForEach-Object% = ForEach-Objectft = Format-Tablefw = Format-Widegal = Get-Aliasgc = Get-Contentgci = Get-ChildItemgcm = Get-Commandgdr = Get-PSDriveghy = Get-Historygi = Get-Itemgl = Get-Locationgm = Get-Membergp = Get-ItemPropertygps = Get-Processgroup = Group-Objectgsv = Get-Servicegsnp = Get-PSSnapingu = Get-Uniquegv = Get-Variablegwmi = Get-WmiObjectiex = Invoke-Expressionihy = Invoke-Historyii = Invoke-Itemipal = Import-Aliasipcsv = Import-Csvmi = Move-Itemmp = Move-ItemPropertynal = New-Aliasndr = New-PSDriveni = New-Itemnv = New-Variableoh = Out-Hostrdr = Remove-PSDriveri = Remove-Itemrni = Rename-Itemrnp = Rename-ItemPropertyrp = Remove-ItemPropertyrsnp = Remove-PSSnapinrv = Remove-Variablervpa = Resolve-Pathsal = Set-Aliassasv = Start-Servicesc = Set-Contentselect = Select-Objectsi = Set-Itemsl = Set-Location sleep = Start-Sleep sort = Sort-Objectsp = Set-ItemProperty spps = Stop-Process spsv = Stop-Service sv = Set-Variabletee = Tee-Object where = Where-Object ? = Where-Object write = Write-Output cat = Get-Contentcd = Set-Location clear = Clear-Hostcp = Copy-Itemh = Get-History history = Get-History kill = Stop-Processlp = Out-Printerls = Get-ChildItem mount = New-PSDrive mv = Move-Itempopd = Pop-Location ps = Get-Process pushd = Push-Location pwd = Get-Locationr = Invoke-Historyrm = Remove-Item rmdir = Remove-Item echo = Write-Output cls = Clear-Host chdir = Set-Location copy = Copy-Itemdel = Remove-Itemdir = Get-ChildItem erase = Remove-Item move = Move-Itemrd = Remove-Itemren = Rename-Item set = Set-Variable type = Get-Content#PSDrivealiascertenvfunctionhkcuhklmvariable#获取帮助help get*help *processhelp dirhelp dir -fullhelp dir -detailedhelp dir -exampledir -?#转义序列`0 //空值`a //Beep`b //退格`f //换页`n //新⾏`r //回车`t //制表符`v //垂直引号`` // "`"#数字常量1kb // 10241mb1gb1e3 // 10000xFFFF // 65535#编辑脚本,推荐使⽤PrimalScript的最新版本,⾮常强⼤#设置脚本安全策略set-executionpolicy Restricted #默认set-executionpolicy AllSigned #部署set-executionpolicy RemoteSigned #开发set-executionpolicy Unrestricted #不推荐#执⾏脚本必须带路径./myScript.ps1#获取基于⽤户名和密码的凭据对象$cert = get-credential#对脚本签名$cert = Get-PfxCertificate C:\Test\Mysign.pfxSet-AuthenticodeSignature myScript.ps1 -cert $cert#操作系统gwmi win32_operatingsystem#⾃动变量$Args #传递进函数的参数$_ #通过管道传⼊的对象$input #通过管道传⼊的对象集合$$ #前⼀命令⾏的最后⼀个标记$? #上⼀命令的布尔状态$^ #前⼀命令⾏的第⼀个标记$Matches #使⽤ –match 运算符找到的匹配项的哈希表$Error[0] #前⼀次错误$Home #⽤户的主⽬录$Host #引⽤宿主 POWERSHELL 语⾔的应⽤程序$LastExitCode #上⼀程序或脚本的退出代码$PSHome #Windows PowerShell 的安装位置$profile #标准配置⽂件(可能不存在)$StackTrace #Windows PowerShell 捕获的上⼀异常#类型空类型[void]数值类型[byte] typeof(byte)[decimal] typeof(decimal)[double] typeof(double)[float] typeof(float)[int] typeof(int)[long] typeof(long)[single] typeof(float)字符类型[char] typeof(char)[string] typeof(string)布尔类型[bool] typeof(bool)集合类型[array] typeof(System.Array)typeof(System.Object[])[hashtable] typeof(System.Collections.Hashtable) 其它[psobject] typeof(System.Management.Automation.PSObject)[ref] typeof(System.Management.Automation.PSReference)[regex] typeof(System.Text.RegularExpressions.Regex)[scriptblock] typeof(System.Management.Automation.ScriptBlock)[switch] typeof(System.Management.Automation.SwitchParameter)[type] typeof(System.Type)[wmi] typeof(System.Management.ManagementObject)[wmiclass] typeof(System.Management.ManagementClass)[wmisearcher] typeof(System.Management.ManagementObjectSearcher)[xml] typeof(System.Xml.XmlDocument)example:#[void][void] $var #可以阻⽌$var输出#[xml]$var = [xml] "onetwo3"$var.top$var.top.a$var.top.a = "13"#⾃定义函数function writeln([string] $str) { echo $str }function writeln([string] $str) { Begin {echo "Begin"} Process {echo $str} End {echo "End"} } function writeln { param ([string] $str = $(throw "missing parameter")); echo $str } ${function:writeln} = { param ([string] $str = $(throw "missing parameter")); echo $str }#⽂本⽂件读写${C:\test.txt} = "Hello`r`n"${C:\test.txt} += "-----------------"$Line1 = ${C:\test.txt}[0]# $null$var = $null #删除$vardir > $null$null = dir#Invoke$method = "ToUpper""abc".$method.Invoke()#布尔值$true$false#where, select等的⽤法cd c:\dir | where {$_.Name -eq "WINDOWS"} | select Length,Namedir | ? {$_.Name -eq "WINDOWS"}# 列出字符串对象"str"的所有属性与⽅法"str" | gm#强制类型变量[Boolean] $condition = 0[string] $str = "hello"#数组$array = 1,2,3,4,5,6,7,8$array = @(1,2,3,4,5,6,7,8)$array[-1] #最后⼀个元素$array[0..4]$array[-1..-8] #倒序#哈希表$hash = @{"Name"="Icebird"; "Job"="Engineer"}#如何取得⽂本的⾏数(type C:\test.txt | measure-object).Count#从控制台读取⼀⾏输⼊$var = Read-Host#获取环境变量$path = $env:Path#读取注册表$a = (gp "hklm:\\Software\Microsoft\Windows\CurrentVersion").ProductId #⽐较和运算-like "file.doc" -like "file.*"-notlike-contains 1,2,3 -contains 1-notcontains-----------------------------------eq = (忽略⼤⼩写)-ieq = (忽略⼤⼩写)-ceq = (不忽略⼤⼩写)-ne !=-gt >-lt <-ge >=-le <=以上操作符也可⽤于对数组操作:1,2,3,5,3,2 -lt 3-----------------------------------and-or-not! 等价于-not-xor% 模运算* 可⽤于字符串重复: "-" * 80#位操作-band-bor-bnot-bxor#特殊操作$a = "Hat"$a -replace "a","o"$a -is [string]$a = 1 -as [string]$b = @(1..5)"{0:d}" -f (get-date)"{0:yyyy-MM-dd}" -f (get-date)#格式化$a = 123456789.456789$a.ToString("F4")"{0:F4}" -f $a"{0,-20:F4}{1}" -f $a,0"{0,20:F4}" -f $a"{0:x}" -f 100000"{0:X}" -f 100000#正则表达式$regex = [regex]"He"$str = "Hello, Hello"$isMatch = $str -match $regex$isMatch = $regex.ismatch($str)$matches = $regex.matches($str)#双引号与单引号$a = 1;"$a"会输出1'$a'会输出$a# & 与 ..{$var = 1} #看作include&{$var = 1} #看作call&"dir" #意味着函数名之类的可以当作参数传⼊#foreachforeach ($file in dir) { $ }dir | % { $_.Name }#forfor ($i = 1; $i -lt 5; $i++) {echo $i}#while$i = 0while ($i -lt 4) { $i++; $i }#do...while$i = 10do {$i--; $i} while ($i -lt 5)#do...until$i = 10do {$i--; $i} until ($i -lt 5)#if...else[if]$obj = "Hello"if ($obj -is [string]) { "ISSTRING" }if ($obj -is [string]) { "ISSTRING" } else { "ISNOTSTRING" }if ($obj -is [string]) { "ISSTRING" } elseif ($obj -is [int]) { "ISINTEGER" } #switchswitch (1,2,3) { 1 {"a"} 2 {"b"} 3 {"c"} default {"?"} }switch (1) { "a" {"China"} "b" {"Japan"} "c" {"c"} default {"???"} }#switch -regex$var = "abcdefg"switch -regex($var) {"^\w+$" {echo $_" is a word"}"^\d+$" {echo $_" is a number"}"^\s+$" {echo $_" is a space"}default {echo "?"}}#switch -casesensitive#switch -wildcard#switch -extract ?怎么⽤#switch -file ?怎么⽤#抛出错误&捕获异常throw "Error"raised "Exception"trap{write-host "Error: " $_.Exception.Message#$_.TargetObject#$_.CategoryInfo#$_.FullyQualifiedErrorID#$_.ErrorDetails#$_.InvocationInfocontinue#break#return}#输出格式化Format-ListFormat-TableFormat-WideFormat-Customdir | format-table -groupby Modedir | sort Name -descdir | sort Name -desc | select Name,Length,Mode | export-csv C:\dir.csv dir | sort Name -desc | select Name,Length,Mode | export-clixml C:\dir.csv dir | convertto-html#使⽤.NET的对象$webclient = New-Object .WebClient$webclient.Encoding = [System.Text.Encoding]::UTF8$url = ""$data = [string]$webclient.downloadstring($url)#使⽤COM对象$spVoice = new-object -com "SAPI.spvoice"$spVoice.Speak("Hello, I am Icebird.")。

Powershell对终端加域和退域

Powershell对终端加域和退域

Powershell对终端加域和退域
一、加、退域组件包
config.ini Add-Domain.ps1Add-Domain.bat Remove-Domain.ps1 Remove-Domain.bat
二、组件说明
1、加域配置
config.ini,配置加域,退域的条件。

用户只需修改这个配置,即可通过上述的组件包进行加域或退域。

2、加域入口文件
Add-Domain.bat,配置好加域配置,双击此文件即可对终端进行加域。

本文件做了强制使用管理员模式执行,对于windows 10系统默认权限都是非管理员,是无法加域成功。

3、退域入口文件
Remove-Domain.bat,配置好加域配置,双击此文件即可对终端进行退域。

本文件做了强制使用管理员模式执行,对于windows 10系统默认权限都是非管理员,是无法退域成功。

4、加域脚本
Add-Domain.ps1,具体实现加域的代码,并做了兼容性测试。

需要研究打开上面的附件即可。

5、退域脚本
Remove-Domain.ps1,具体实现退域的代码,并做了兼容性测试。

需要研究打开上面的附件即可。

PowerShell条件判断和循环

PowerShell条件判断和循环

PowerShell条件判断和循环比较运算符:-eq :等于-ne :不等于-gt :大于-ge :大于等于-lt :小于-le :小于等于-contains :包含-notcontains :不包含布尔运算符:-and:和-or:或-xor:异或-not:逆!($var)布尔运算:1 -eq 21,2,3,2 -contains 2("A","B","C") -notcontains "D"数组运算:1,2,3,2 -eq 21,2,3,2 -ne 21,2,3,2 -ge 2IF/ELSE 条件判断语句:$a=2if($a -gt 1) {"$a 大于 1"}if($a -gt 1) {"$a 大于 1"} else {"$a 小于 1"}if($a -gt 1) {"$a 大于 1"} elseif ($a -lt 1){"$a 小于 1"} else {"1等于1"}————————————————ForEach-Object 逐项处理数据:#逐项输出服务项Get-Service | ForEach-Object{$_}#逐项查看服务中列Name ,如包含“SQL”字符串,则输出服务中的列 DisplayNameGet-Service | ForEach-Object{if ($_.Name -like "*SQL*"){$_.DisplayName}}#输出当前目录下最近一天更改过的文件Get-ChildItem | ForEach-Object{if ($_.LastWriteTime -gt (Get-Date).AddDays(-1)){$_}}————————————————SWITCH 条件判断语句:#一般执行语法$a=10switch($a){1 {"return 1"}2 {"return 2"}3 {"return 3"}Default {"else return"}}#多个符合的条件都执行$a=10switch($a){1 {"return 1"}2 {"return 2"}10 {"return 10"}{$_ -gt 5 }{ "小于5" }{$_ -lt 100 }{ "小于100" }{($_ % 2) -eq 0}{ "余2为0" }Default {"else return"}}————————————————Do While 循环语句 / While 循环语句 / For 循环语句:#Do While 循环语句$n=1do { $sum2+=$n ; $n++ } while( $n -le 10); $sum2#While 循环语句$n=1while($n -le 10){ $sum3+=$n ; $n++ } ; $sum3#For 循环语句for($n=1;$n -le 10;$n++){ $sum4+=$n } ; $sum4 ————————————————。

powershell所有命令公布解析

powershell所有命令公布解析

powershell所有命令公布!Split-Path Cmdlet返回指定的路径部分。

Test-Path Cmdlet确定路径的所有元素是否存在。

Get-Process Cmdlet获取在本地计算机上运行的进程。

Stop-Process Cmdlet停止一个或多个正在运行的进程。

Remove-ItemProperty Cmdlet从注册表项中删除属性及其值。

Rename-ItemProperty Cmdlet重命名项的属性。

Resolve-Path Cmdlet解析路径中的通配符并显示路径内容。

Get-Service Cmdlet获取本地计算机上的服务。

Stop-Service Cmdlet停止一个或多个正在运行的服务。

Start-Service Cmdlet启动一个或多个已停止的服务。

Suspend-Service Cmdlet挂起(暂停)一个或多个正在运行的服务。

Resume-Service Cmdlet恢复一项或多项挂起(暂停的)服务。

Restart-Service Cmdlet停止并接着启动一个或更多服务。

Set-Service Cmdlet更改服务的显示名称、说明或启动模式。

New-Service Cmdlet在注册表和服务数据库中为Windows 服务创建新项。

Set-Content Cmdlet在项中写入内容或用新内容替换其中的内容。

Set-ItemProperty Cmdlet设置位于指定位置的属性的值。

Get-Acl Cmdlet获取资源(例如文件或注册表项)的安全描述符。

Set-Acl Cmdlet更改指定资源(例如文件或注册表项)的安全描述符。

Get-PfxCertificate Cmdlet获取计算机上 .pfx 证书文件的相关信息。

Get-Credential Cmdlet获取基于用户名和密码的凭据对象。

Get-ExecutionPolicy Cmdlet获取外壳程序的当前执行策略。

PowerShell 常见命令别名及其作用

PowerShell 常见命令别名及其作用

PowerShell 常见命令别名及其作用Name Category Synopsis? Alias Where-Object ac Alias Add-Content asnp Alias Add-PSSnapin cat Alias Get-Content cd Alias Set-Location chdir Alias Set-Location clc Alias Clear-Content clear Alias Clear-Host clhy Alias Clear-History cli Alias Clear-Item clp Alias Clear-ItemProperty cls Alias Clear-Host clv Alias Clear-Variable compare Alias Compare-Object copy Alias Copy-Item cp Alias Copy-Item cpi Alias Copy-Item cpp Alias Copy-ItemProperty cvpa Alias Convert-Path dbp Alias Disable-PSBreakpoint del Alias Remove-Item diff Alias Compare-Object dir Alias Get-ChildItem ebp Alias Enable-PSBreakpoint echo Alias Write-Output epal Alias Export-Alias epcsv Alias Export-Csv epsn Alias Export-PSSession erase Alias Remove-Item etsn Alias Enter-PSSession exsn Alias Exit-PSSession fc Alias Format-Custom fl Alias Format-List foreach Alias ForEach-Object ft Alias Format-Table fw Alias Format-Wide gal Alias Get-Alias gbp Alias Get-PSBreakpoint gc Alias Get-Contentgcm Alias Get-Command gcs Alias Get-PSCallStack gdr Alias Get-PSDrive ghy Alias Get-History gi Alias Get-Item gjb Alias Get-Job gl Alias Get-Location gm Alias Get-Member gmo Alias Get-Module gp Alias Get-ItemProperty gps Alias Get-Process group Alias Group-Object gsn Alias Get-PSSession gsnp Alias Get-PSSnapin gsv Alias Get-Service gu Alias Get-Unique gv Alias Get-Variable gwmi Alias Get-WmiObject h Alias Get-History history Alias Get-History icm Alias Invoke-Command iex Alias Invoke-Expression ihy Alias Invoke-History ii Alias Invoke-Item ipal Alias Import-Alias ipcsv Alias Import-Csv ipmo Alias Import-Module ipsn Alias Import-PSSession ise Alias powershell_ise.exe iwmi Alias Invoke-WmiMethod kill Alias Stop-Process lp Alias Out-Printer ls Alias Get-ChildItem man Alias help md Alias mkdir measure Alias Measure-Object mi Alias Move-Item mount Alias New-PSDrive move Alias Move-Item mp Alias Move-ItemProperty mv Alias Move-Item nal Alias New-Alias ndr Alias New-PSDrivenmo Alias New-Module nsn Alias New-PSSession nv Alias New-Variable ogv Alias Out-GridView oh Alias Out-Host popd Alias Pop-Location ps Alias Get-Process pushd Alias Push-Location pwd Alias Get-Location r Alias Invoke-History rbp Alias Remove-PSBreakpoint rcjb Alias Receive-Job rd Alias Remove-Item rdr Alias Remove-PSDrive ren Alias Rename-Item ri Alias Remove-Item rjb Alias Remove-Job rm Alias Remove-Item rmdir Alias Remove-Item rmo Alias Remove-Module rni Alias Rename-Item rnp Alias Rename-ItemProperty rp Alias Remove-ItemProperty rsn Alias Remove-PSSession rsnp Alias Remove-PSSnapin rv Alias Remove-Variable rvpa Alias Resolve-Path rwmi Alias Remove-WmiObject sajb Alias Start-Job sal Alias Set-Alias saps Alias Start-Process sasv Alias Start-Service sbp Alias Set-PSBreakpoint sc Alias Set-Content select Alias Select-Object set Alias Set-Variable si Alias Set-Item sl Alias Set-Location sleep Alias Start-Sleep sort Alias Sort-Object sp Alias Set-ItemProperty spjb Alias Stop-Job spps Alias Stop-Processstart Alias Start-Process sv Alias Set-Variable swmi Alias Set-WmiInstance tee Alias Tee-Object type Alias Get-Content where Alias Where-Object wjb Alias Wait-Job write Alias Write-OutputName Category SynopsisAdd-Computer Cmdlet 将本地计算机添加到域或工作组中。

PowerShell实例教程讲解

PowerShell实例教程讲解

PowerShell实例教程认识PowerShell介绍和安装Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。

你可以把它看成是命令行提示符cmd.exe的扩充,不对,应当是颠覆。

powershell需要.NET环境的支持,同时支持.NET对象。

微软之所以将Powershell 定位为Power,并不是夸大其词,因为它完全支持对象。

其可读性,易用性,可以位居当前所有shell之首。

当前powershell有四版本,分别为1.0,2.0,3.0 ,4.0•如果您的系统是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了。

自定义控制台右击标题栏选择”属性”弹出powershell控制台对话框。

在这里有四个选项卡:选项、字体、布局和颜色。

“选项”设置光标,历史记录,编辑模式的切换。

控制台选项“字体”设置字体的名称和大小控制台字体“布局”设置窗口的缓冲区、窗口的大小、窗口起始坐标控制台布局“颜色”设置屏幕和对话框的背景色和前景色。

控制台颜色快速编辑模式和标准模式powershell控制台有两种模式,一个是快速编辑模式,一个是标准模式。

快速编辑模式和标准模式的切换可以通过控制台标题栏->鼠标右击->属性->选项->编辑选项。

•Powershell标准模式鼠标右击选择标记后才能实现复制和粘切功能。

•Powershell快速编辑模式可以通过鼠标左键选择任意矩形区域内的文本,并且鼠标右击实现复制功能。

快捷键Ctrl+Home删除光标最左端的所有字符Tab自动补齐命令或者文件名管道和重定向管道把上一条命令的输出作为下一条命令的输入。

PowerShell的基本使用方法

PowerShell的基本使用方法

PowerShell的基本使⽤⽅法⽬录什么是powershell1. 如何启动PowerShell2. 如何运⾏程序、脚本和已有的软件3. 运⾏PowerShell命令4. 如何查找指定命令以及命令详情5. 如何在外部调⽤PowerShell脚本6. 如何获知最后执⾏命令的状态7. 如何计算命令执⾏时间8. 了解命令的别名9. 如何操作使⽤管理控制台历史命令10. 如何重定向输出11. 如何记录PowerShell会话全⽂12. 如何显⽰对象属性为列表或表格13. 如何连接虚拟机中的系统什么是powershellPowerShell⾸先是个Shell,定义好了⼀堆命令与操作系统,特别是与⽂件系统交互,能够启动应⽤程序,甚⾄操纵应⽤程序。

PowerShell还能允许将⼏个命令组合起来放到⽂件⾥执⾏,实现⽂件级的重⽤,也就是说有脚本的性质。

且PowerShell能够充分利⽤.Net类型和COM对象,来简单地与各种系统交互,完成各种复杂的、⾃动化的操作。

也可以看作是微软系统为了让shell功能像linux系统⼀样强⼤⽽推出的cmd.exe的扩展。

1. 如何启动PowerShell现在的Windows系统中⼀般都集成了PowerShell,启动⽅法有如下⼏种:a) 直接开始菜单 -> 所有程序 -> Windows PowerShell -> Windows PowerShell(不同系统可能路径不⼀样)。

启动后效果如下:b) 开始菜单 -> 运⾏(run) -> 输⼊”PowerShell”。

启动成功后和上图⼀样。

c) 命令提⽰符(Command Prompt) -> PowerShell。

启动后效果如下:启动成功后就可以在⾥⾯输⼊要执⾏的命令了,这就是PowerShell的交互界⾯。

2. 如何运⾏程序、脚本和已有的软件如果以前经常使⽤⼀些别的⼯具进⾏开发,可能会有⼀些可执⾏⽂件、Perl脚本、批处理⽂件等,如果不想放弃这些,可以使⽤PowerShell直接运⾏它们。

PowerShell中格式化命令和输出命令

PowerShell中格式化命令和输出命令

PowerShell中格式化命令和输出命令今天, 我将为您介绍如何使⽤格式化和输出命令. 在PowerShell中,负责进⾏格式化和输出的是三类cmdlet。

他们分别是:Format-*、Out-*和Write-* 。

顾名思义,Format-* 主要是⽤来对信息进⾏格式化操作,Out-*⽤于指定输出设备,⽽ Write-* 为 PowerShell 宿主(Host)输出的更多有⽤信息提供了快捷访问接⼝。

我们要将对象输出到控制台或打印机等位置前,我们⾸先必须将对象格式化成为字符串的形式。

⼀个对象可能包含⼏⼗种属性信息,PowerShell的开发者已经考虑到我们在⽇常使⽤时,不会使⽤⼀个对象的所有信息,因此默认情况下只保留该对象上最主要的⼏种属性。

让我们来看看进程对象默认会显⽰哪些属性。

⾸先看看进程对象究竟有多少个属性:PS C:\> (Get-Process Idle | Get-Member -MemberType Property).Count51在上⾯例⼦,⾸先使⽤Get-Process命令返回表⽰Idle进程的对象,并通过Get-Member命令返回该对象上所有属性,最后我们给出该对象的属性个数(打印这些属性太占地⽅了,你可以把Count去掉,检查返回的结果)。

让我们看看PowerShell默认情况下会输出哪些属性吧:PS C:\> Get-Process IdleHandles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName------- ------ ----- ----- ----- ------ -- -----------0 0 0 16 0 0 Idle正如前⾯所介绍的,PowerShell默认只会返回对象上⼀部分属性信息,究竟显⽰哪些属性是通过定义在ETS系统中的信息决定的。

Format族包含了:Format-Custom、Format-List、Format-Table和Format-Wide四个命令。

WindowsPowerShell基本语法及常用命令

WindowsPowerShell基本语法及常用命令

WindowsPowerShell基本语法及常⽤命令PowerShell常⽤命令:⼀ Get类1.Get-Command :得到所有PowerShell命令,获取有关 cmdlet 以及有关 Windows PowerShell 命令的其他元素的基本信息。

包括Cmdlet、Alias、Function。

2.Get-Process :获取所有进程3.Get-Help :显⽰有关 Windows PowerShell 命令和概念的信息4.Get-History :获取在当前会话中输⼊的命令的列表5.Get-Job :获取在当前会话中运⾏的 Windows PowerShell 后台作业6.Get-FormatData :获取当前会话中的格式数据7.Get-Event :获取事件队列中的事件8.Get-Alias :获取当前会话的别名9.Get-Culture :获取操作系统中设置的当前区域性10. Get-Date :获取当前⽇期和时间11. Get-Host :获取表⽰当前主机程序的对象12.Get-Member :获取对象的属性和⽅法。

如:$var = 3$var | get-member结果:TypeName: System.Int32Name MemberType Definition---- ---------- ----------CompareTo Method int CompareTo(System.Object value), int CompareTo(int value) Equals Method bool Equals(System.Object obj), bool Equals(int obj)GetHashCode Method int GetHashCode()GetType Method type GetType()GetTypeCode Method System.TypeCode GetTypeCode()ToString Method string ToString(), string ToString(string format), string ToString(System.IFormatProvider provider...13.Get-Random :从集合中获取随机数或随机选择对象14.Get-UICulture :获取操作系统中当前⽤户界⾯ (UI) 区域性设置15.Get-Unique :从排序列表返回唯⼀项⽬16.Get-Variable :获取当前控制台中的变量17.Get-EventLog :获取本地或远程计算机上的事件⽇志或事件⽇志列表中的事件18.Get-ChildItem :获取⼀个或多个指定位置中的项和⼦项19.Get-Content :获取指定位置的项的内容20.Get-ItemProperty :获取指定项的属性21.Get-WmiObject :获取 Windows Management Instrumentation (WMI) 类的实例或可⽤类的相关信息22.Get-Location :获取当前⼯作位置的相关信息(如:F:\Users\TaoMin )23.Get-PSDrive:获取当前会话中的 Windows PowerShell 驱动器24.Get-Item:获取位于指定位置的项25.Get-Process :获取在本地计算机或远程计算机上运⾏的进程26.Get-Service :获取本地或远程计算机上的服务27.Get-Transaction :获取当前(活动)事务28.Get-ExecutionPolicy :获取当前会话中的执⾏策略⼆.Set类(set类命令⼀般都含有参数)1.Set-Alias :在当前 Windows PowerShell 会话中为 cmdlet 或其他命令元素创建或更改别名(替代名称)如:如:Set-Alias aaa Get-Command2.Set-PSDebug :打开和关闭脚本调试功能,设置跟踪级别并切换 strict 模式3.Set-StrictMode :建⽴和强制执⾏表达式、脚本和脚本块中的编码规则4.Set-Date :将计算机上的系统时间更改为指定的时间5.Set-Variable :设置变量的值,如果该变量还不存在,则创建该变量6.Set-PSBreakpoint :在⾏、命令或者变量上设置断点7.Set-Location :将当前⼯作位置设置为指定的位置8.Set-Item :将项的值更改为命令中指定的值9.Set-Service :启动、停⽌和挂起服务并更改服务的属性10.Set-Content :在项中写⼊内容或⽤新内容替换其中的内容11.Set-ItemProperty :创建或更改某⼀项的属性值12.Set-WmiInstance :创建或更新现有 Windows Management Instrumentation (WMI) 类的实例13.Set-ExecutionPolicy :更改 Windows PowerShell 执⾏策略的⽤户⾸选项。

windows powershell 用法

windows powershell 用法

windows powershell 用法Windows PowerShell 是一种强大的命令行工具,用于自动化和管理Windows 系统。

以下是Windows PowerShell 的一些基本用法:一、启动PowerShell:在开始菜单中搜索"PowerShell",然后选择"Windows PowerShell" 或"Windows PowerShell ISE"(一个带有图形界面的版本)。

在命令提示符(Command Prompt)中输入"PowerShell" 并按回车。

在文件路径下,按Shift + 鼠标右键,选择"在此处打开PowerShell"。

二、基本命令:Get-Command:获取所有可用的命令。

Get-Process:获取当前运行的所有进程。

cls 或 Clear-Host:清屏。

help:显示帮助信息。

例如,help Get-Process 会显示关于 Get-Process 命令的帮助。

三、文件操作:New-Item:创建新的文件或目录。

例如,New-Item -Type Directory "新目录名" 会创建一个新目录。

Remove-Item:删除文件或目录。

例如,Remove-Item "文件或目录名" 会删除指定的文件或目录。

Get-Content:查看文件内容。

例如,Get-Content "文件名" 会显示文件的内容。

Set-Content:给文件添加内容。

例如,Set-Content "文件名" "要添加的内容" 会将指定的内容添加到文件中。

Add-Content:向文件追加内容。

例如,Add-Content "文件名" "要追加的内容" 会在文件的末尾追加指定的内容。

powershell goto语句

powershell goto语句

powershell goto语句PowerShell是一种用于自动化任务和管理操作系统的脚本语言。

在PowerShell中,可以使用goto语句来跳转到脚本中的指定位置。

下面是关于PowerShell中goto语句的一些示例,以帮助您更好地理解其用法和功能。

1. 跳转到指定标签位置:goto Label1Write-Host "这是标签位置之后的代码"Label1:Write-Host "这是标签位置的代码"2. 跳转到脚本的开头:goto :startWrite-Host "这是跳转位置之后的代码":startWrite-Host "这是跳转位置的代码"3. 跳转到指定行数:goto 10Write-Host "这是行数位置之后的代码"Write-Host "这是行数位置之后的代码"Write-Host "这是行数位置之后的代码"10:Write-Host "这是行数位置的代码"4. 跳转到指定条件位置:$var = 1if ($var -eq 1) {Write-Host "这是条件位置之后的代码" goto Label2}Write-Host "这是条件位置之后的代码" Label2:Write-Host "这是条件位置的代码"5. 跳转到指定函数位置:function MyFunction {Write-Host "这是函数位置的代码"goto :eof}Write-Host "这是函数之后的代码" MyFunction6. 跳转到指定外部脚本位置:goto script.ps1:Label3Write-Host "这是外部脚本位置之后的代码" Label3:Write-Host "这是外部脚本位置的代码"7. 跳转到指定变量值位置:$var = "Label4"goto $varWrite-Host "这是变量位置之后的代码" Label4:Write-Host "这是变量位置的代码"8. 跳转到指定文件位置:goto file.txt:Label5Write-Host "这是文件位置之后的代码" Label5:Write-Host "这是文件位置的代码"9. 跳转到指定循环位置:for ($i = 1; $i -le 10; $i++) {Write-Host "这是循环位置之后的代码" goto Label6}Write-Host "这是循环位置之后的代码"Label6:Write-Host "这是循环位置的代码"10. 跳转到指定异常位置:try {Write-Host "这是异常位置之后的代码"throw "异常信息"}catch {Write-Host "这是异常位置之后的代码"goto Label7}Write-Host "这是异常位置之后的代码"Label7:Write-Host "这是异常位置的代码"以上是关于PowerShell中goto语句的一些示例。

powershell判断语句

powershell判断语句

powershell判断语句PowerShell是一种强大的命令行工具和脚本语言,它可以帮助用户自动化各种任务。

在PowerShell中,判断语句是非常重要的一部分,它可以帮助用户根据条件执行不同的操作。

PowerShell中的判断语句主要有以下几种:1. If语句If语句是PowerShell中最常用的判断语句之一,它可以根据条件执行不同的操作。

If语句的基本语法如下:if (条件) {执行操作}其中,条件可以是任何可以返回True或False的表达式,如果条件为True,则执行操作。

2. Else语句Else语句可以在If语句的条件为False时执行另外的操作。

Else语句的基本语法如下:if (条件) {执行操作1} else {执行操作2}其中,如果条件为True,则执行操作1,否则执行操作2。

3. ElseIf语句ElseIf语句可以在If语句的条件为False时判断另外一个条件,并执行相应的操作。

ElseIf语句的基本语法如下:if (条件1) {执行操作1} elseif (条件2) {执行操作2} else {执行操作3}其中,如果条件1为True,则执行操作1,否则判断条件2,如果条件2为True,则执行操作2,否则执行操作3。

4. Switch语句Switch语句可以根据不同的条件执行不同的操作。

Switch语句的基本语法如下:switch (表达式) {条件1 { 执行操作1 }条件2 { 执行操作2 }默认 { 执行操作3 }}其中,表达式可以是任何可以返回值的表达式,根据表达式的值,执行相应的操作。

5. ForEach语句ForEach语句可以对数组或集合中的每个元素执行相同的操作。

ForEach语句的基本语法如下:foreach (元素 in 数组) {执行操作}其中,元素是数组中的每个元素,可以在操作中使用。

总结以上是PowerShell中常用的判断语句,它们可以帮助用户根据不同的条件执行不同的操作,从而实现自动化任务。

PowerShell中使用return语句退出函数例子

PowerShell中使用return语句退出函数例子

PowerShell中使⽤return语句退出函数例⼦本⽂介绍在⾃定义PowerShell函数时,可以使⽤return语句来退出函数,同时return语句也可以返回值给函数的调⽤者。

使⽤return语句来直接退出函数。

看⼀个退出函数的例⼦:复制代码代码如下:function Get-NamedProcess{param($name=$null)if ($name -eq $null){Write-Host -ForegroundColor Red ‘Specify a name!'return}Get-Process $name}上⾯这个Get-NamedProcess,要求输⼊⼀个进程的名称,然后函数将输出进程的相关信息。

如果调⽤时没有输⼊进程名称,这时应弹出⼀句提⽰,然后退出函数。

很好理解吧!在这个函数中,return就这样光秃秃的⽤就可以直接退出函数了。

return其实还可以返回值给函数的调⽤者。

看⼀个例⼦:复制代码代码如下:function ConvertTo-Binary{param($Number)return [System.Convert]::ToString($Number, 2)}这个函数的作⽤是将输⼊的数字转换成⼆进制串。

调⽤的执⾏情况如下:复制代码代码如下:PS> ConvertTo-Binary -Number 1231111011最后要说明⼀下,⼀个函数的返回值,其实要不要return都⼀样。

只要是在函数中的输出内容,都会被当作返回值给函数。

看看下⾯这个函数:复制代码代码如下:function ConvertTo-Binary{param($Number)“Original Number: $Number”[System.Convert]::ToString($Number, 2)return}输出结果如下:复制代码代码如下:PS> ConvertTo-Binary -Number 123Original Number: 1231111011关于PowerShell函数退出函数语句,本⽂就介绍这么多,希望对您有所帮助,谢谢!。

Shell中exit和return的区别讲解

Shell中exit和return的区别讲解

Shell中exit和return的区别讲解1.exit命令exit命令是Shell内建命令,⽤于退出当前Shell进程。

使⽤格式如下:exit [<n>]可以指定退出状态n,n的取值范围是0-255,⼀般情况下,0表⽰正常退出,⾮零表⽰异常退出。

如果状态码是0-255之外的数值,则会被强制转换为uint8_t类型的数值,⽐如-1会被转换为255,256会发⽣类型宽度截断,被转换为0。

状态码n可以不指定,默认是上⼀条命令的退出状态码。

关于状态码值的定义尚未有统⼀的标准,但是结束程序时随意的指定⼀个状态码是⼀个不好的⾏为,应该使⽤统⼀的状态码。

这样便于调⽤者更具状态码快速粗略地推断出被调的状态,⽽不⽤去查找状态码的具体含义。

当然实际的状态码值可以⾃定义,项⽬中统⼀即可,但还是推荐使⽤GNU C的头⽂件<sysexits.h>中对于状态码的定义。

#define EX_OK 0 /* successful termination */#define EX__BASE 64 /* base value for error messages */#define EX_USAGE 64 /* command line usage error */#define EX_DATAERR 65 /* data format error */#define EX_NOINPUT 66 /* cannot open input */#define EX_NOUSER 67 /* addressee unknown */#define EX_NOHOST 68 /* host name unknown */#define EX_UNAVAILABLE 69 /* service unavailable */#define EX_SOFTWARE 70 /* internal software error */#define EX_OSERR 71 /* system error (e.g., can't fork) */#define EX_OSFILE 72 /* critical OS file missing */#define EX_CANTCREAT 73 /* can't create (user) output file */#define EX_IOERR 74 /* input/output error */#define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */#define EX_PROTOCOL 76 /* remote error in protocol */#define EX_NOPERM 77 /* permission denied */#define EX_CONFIG 78 /* configuration error */#define EX__MAX 78 /* maximum listed value */2.return关键字return是语⾔级别的⼀个关键字,⽤于结束函数并返回⼀个结果。

了解Powershell中的Exit函数

了解Powershell中的Exit函数

了解Powershell中的Exit函数Powershell⽀持“EXIT”关键字,它的范围是基于作⽤域的,它可能⽐你想象的⼯作⽅式要不同。

让我们来测试下这个函数:复制代码代码如下:function test{'A'exit'B'}当你保存并调⽤脚本,你将得到:复制代码代码如下:PS> C:\Users\Tobias\Documents\PowerShell\test12343.ps1A这时”exit”过早的结束了这个函数。

可是当你没有保存当前脚本或当你调⽤的是⼀个交互函数,你整个Powershell宿主将关闭。

“Exit”结束当前调⽤的脚本,不仅仅是函数。

倘若你把它像下⾯那样保存到脚本,你也许会有意外的发现:复制代码代码如下:function test{'A'exit'B'}'Start'test'Stop'现在结果像这样:复制代码代码如下:PS<> C:\Users\Tobias\Documents\PowerShell\test12343.ps1StartA请注意,代码“Stop”没有执⾏。

“Exit”结束了⾃⾝函数并且停⽌了作⽤域后续的执⾏。

如果调⽤交互函数为什么不会关闭Powershell呢?(这是因为,你调⽤的作⽤域宿主是它⾃⼰)。

所以该怎么使⽤“exit”?你可以在脚本⼯作时设置⼀个错误等级数。

这个等级数能从调⽤中获得。

所以如果你创建⼀个Powershell计划任务,或通过Powershell.exe执⾏批处理⽂件,这时你在“Exit”后指定的不同数字将变成你脚本外的退出代码就如同你批处理中的%ERRORLEVEL%⼀样。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PowerShell的Exit关键字与Return关键字,以及自动变量$?和$LastExitCode
——与Unix Shell的比较
最近因为工作关系,第一次接触PowerShell。

因为之前接触的都是Unix Shell,所以在刚开始用PowerShell的时候,把Unix的想法与概念带到PowerShell中,到最后才发现二者之间很多东西都是不一样的。

关于这次的工作内容,主要任务是把原来在Unix上写的Shell用PowerShell再实现一下。

需求与接口都要求与原来的一样(实际上谁也不想改这些东西)。

一、Exit关键字
语法:Exit [状态值]
这个不用想都知道是退出命令,中止当前的执行。

但是这里面却是一大堆的陷阱。

在Unix Shell中,只要Exit被执行,不管Shell之间用source命令有多少层读取关系,都会中止所以执行,并且设置退出状态值。

状态值在执行结束之后用$?来确认。

一切都很清楚。

但是在PowerShell中却变得比较复杂。

先看一下PowerShell2.0中关于Exit的说明,少得可怜。

另外,在《Window PowerShell应用手册》里关于Exit也没有特别的说明。

对PowerShell中Exit的命令,分成下面三种情况。

1、在脚本中直接执行。

2、在用source读取的脚本中执行。

3、在函数中执行。

分别用例子来说明。

1、在脚本中直接执行。

这种情况下和Unix Shell是一样的,都是中止脚本的执行。

不同的是在PowerShell中自动变量$?是一个布尔值,因为退出代码不是0而是50,所以执行结束是失败(False);自动变量$LastExitCode里保存的则是退出代码。

2、在用source读取的脚本中执行。

用testMain.ps1文件读取上一个例子中的脚本。

可以看到即使test1.ps1的执行了Exit命令并中止了执行,但是testMain.ps1却还是继续执行后面的命令。

这一点和Unix Shell完全不一样。

3、在函数中执行。

这种情况下和Unix Shell 也是一致的。

补充说明一下,即使这个函数是在另一个脚本中定义的,通过读取该文件后调用这个函数,结果也是一样的。

二、关于$?和$LastExitCode
在上面的几个例子里用到了这两个自动变量来查看脚本的执行结果。

先看一下PowerShell2.0帮助手册里的说明,内容也一样很简单。

$?都是用来确定前一个命令的执行状态,如果是脚本的话,由Exit 命令后面所带的参数和决定执行状态。

0是True ,0以外的数字都是False 。

所有的程序和命令都会在执行后设置$?的值。

$LastExitCode 的值是由Exit [状态值]命令来设置的。

需要注意的是,并不是所有的命令和程序都会去设置这一个自动变量;也就是说,你现在看到$LastExitCode 的值可能并不是前一个命令设置的,而是更早之前的某一个命令设置之后一直保持下来的值。

还有一点需要注意的是,当你刚打开一个PowerShell 的时候,$LastExitCode 这个自动变量是不存在的,只有在某一个设置$LastExitCode 的命令执行过以后才会出现。

刚开始时,我一直以为$?和$LastExitCode 保存的都是前一个命令的结果,直到后来做测试时才发现不是。

之后再找了一下资料,也没有发现相关的说明。

有兴趣的朋友可以自己测试一下。

三、Return 关键字
首先看一下在Return 命令在Unix Shell 中的作用。

Return 和Exit
一样都可以设置命令的执行
状态值,不同的是Exit会中止脚本的执行,而Return不会中止脚本的执行。

在PowerShell里虽然也有Return这一个命令,但是和Unix Shell的完全就是两个不同的概念。

在PowerShell里只有Exit可以设置$LastExitCode,但是Return不能做到。

先看一下PowerShell2.0帮助手册的说明:
所以这里的Return,不是像Unix Shell一样设置%?,也不像C或Java一样只返回Return关键字后面所跟的值,而是当前脚本或函数所有语句的输出。

如果Return前面只有一个输出的话,就是把那个输出返回;如果是有多个输出的话,返回值如下图所示是一个Object数组。

这是一个会让人崩溃的结果,真不知道PowerShell的设计者脑子是不是进水了,还是有我无法想像到的深意在里面。

总结,PowerShell和Unix Shell完全是两种不同的语言,有相似的地方,但是更多的是不同。

工作上碰到的问题,都只能说是自己对这两者的理解都还十分肤浅,不能够运用自如。

2016年1月16日
关于这篇文章
从接触PowerShell开始,有问题上网找资料时发现关于PowerShell的资料比较少,就想把自己的一些理解写出来分享一下。

第一次写这种文章,加上从事工作资历也比较短,不足之处还请大家多多包涵。

文中的观点与理解如有错误,请务必指正出来,不胜感激。

邮箱:xxbcf@
关于作者
80后,2013年才进入IT行业,工作经验与水平都处在入门水平。

相关文档
最新文档