powershell常用命令(二)
注:更多命令详见
Get-Date
功能:获取一个DateTime对象,这个对象代表了当前的时间。实例:
Get-Date
输出;
Tuesday, June 25, 2019 14:53:32Get-Date -Format "dddd MM/dd/yyyy HH:mm K" #格式化输出
结果:
Tuesday 06/25/2019 16:17 -07:00 #结果是一个串对象Get-Date -Format "yyyyMMddHHmmss" #结果形如20210713115516。
#可将结果拼接到与时间有关的对象中。便于记录。Get-Date -Format 'yyyy/MM/dd hh:mm:ss' #结果:2021/08/04 09:46:54
Set-Content(sc)
功能:是一个串处理cmdlet。向一个文件中写一些内容,或者替换文件中的某些内容。
内容通过Value参数或者管道传递给Set-Content。重要参数说明:-Encoding参数指明目标文件编码类型。默认是utf8NoBOM,该参数只有在文件系统中有效。-Force参数强行设置文件的内容,即使文件是只读的。
实例:
Get-Content -Path E:\temp\*.txt -Value 'Hello world' #Vaule可以是变量。
#替换E:\temp目录下所有.txt文件的内容为Hello world
Get-Content -Path E:\temp\*.txt
结果:
Hello world
Hello world#若目标文件不存在,会自动创建
Set-Content -Path E:\temp\DateTime.txt -Value (Get-Date) #DateTime.txt不存在。将Get-Date的结果写入此文件中。#替换文件中内容,将替换结果写会源文件
(Get-Content -Path .\Notice.txt) |ForEach-Object {$_ -Replace 'Warning', 'Caution'} |Set-Content -Path .\Notice.txt#-Filter参数
Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"#-Exculde参数有效,只有当命令路径参数包含的是内容时。
Set-Content -Path E:\temp\*.txt -Exclude aa.txt -Value (Get-Date)
mkdir(md)
注意:mkdir是一个函数,它调用了New-Item cmdlet,此命令可以创建目录和文件。mkdir将-Type参数的值固定为了Directory。因此只能创建目录。运行Get-Content Function:\mkdir可以看到mkdir函数的细节。
Get-Item(gi)
功能:获取指定位置的对象。它不会获取对象的内容,除非用通配符*去要求获得所有内容。即获取路径参数本身。实例:Get-Item E:\temp #结果是temp目录本身Directory: E:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2021/7/2 16:06 temp #注意于Get-Item对比
Get-ChildItem E:\temp #结果于Get-Item E:\temp\*一样。Directory: E:\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2021/7/2 16:12 7 aa.txt
-a---- 2021/7/2 16:24 19 bb.txt
-a---- 2021/7/2 16:20 19 DateTime.txt
Invoke-WebRequest(curl,iwr,wget)
功能:向web网页或web服务发送HTTP/HTTPS请求。它解析响应,返回一系列链接,图片和其他重要的HTML元素。实例:
$Response = Invoke-WebRequest -Uri https://www.bing.com/search?q=how+many+feet+in+a+mile
$Response.InputFields | Where-Object {$_.name -like "* Value*"
} | Select-Object Name, Valuename value
---- -----
From Value 1
To Value 5280
Get-WMIObject
说明:从powershell3.0开始,此cmdlet已被Get-CimInstance代替。
功能:获取WMI类的实例或者一些关于WMI类的信息。
参数说明:-List参数用于在一个指明的名字空间中获取关于WMI类的信息。-Query用于指明WMI请求语句。-Computer参数用于指明远程机器名,但并非远程执行,因此不必配远程操作的环境也可执行。
注意:-Class参数指明一个类的名字。常用的类名有Win32_computerSystem,Win32_bios,Win32_baseboard,Win32_processor,Win32_Share(文件共享),Win32_LogicalDisk(硬盘),Win32_PhysicalMemory,Win32_operatingSystem等。
实例:
Get-WmiObject -List #列出所有的WMI类Get-WmiObject Win32_bios | Get-Member #获取类Win32_bios的所有属性(Get-WmiObject -Class Win32_Service -Filter "name='WinRM'" -ComputerName Server01).StopService()
#停止远程机器Server01上的WinRM服务.此时于Stop-Service类似Get-WmiObject -Class Win32_Bios | Format-List -Property * #获取本地机器的BIOS信息。-Property参数值指明显示所有属性。Get-WMIObject Win32_LogicalDisk -Filter "DeviceID='C:").FreeSpace/1024MB
#返回c盘的剩余空间。单位GBGet-WmiObject -Class Win32_Process #获取本地机器的所有进程Get-WmiObject -Class Win32_Service -ComputerName 10.1.4.62 #远程机器Get-WmiObject -Namespace "root/default" -List #在本地的root或default名字空间获取WMI类(Get-WMIObject Win32_LogicalDisk -Filter "DeviceID='C:'").FreeSpace/1024MB #返回c盘剩余多少GB
Get-SqlAgent
功能:获取一个SQL agent对象,这个对象会出现在SQL Server的任务实例中。实例:#获取一个server 实例的SQL Agent。Get-SqlAgent -ServerInstance "SERVERNAME\INSTANCENAME"
Get-SqlAgentJob
功能:为每一个工作返回一个SQL Agent Job对象实例。而这些工作出现在SQL Agent的任务实例中。实例:
#从指定的server实例(MyServerInstance)中获取所有的工作实例Get-SqlAgent -ServerInstance MyServerInstance | Get-SqlAgentJob#从指定的server实例中,通过指定名字,选择一个工作实例
Get-SqlAgent -ServerInstance MyServerInstance | Get-SqlAgentJob -Name MyJob1
Out-Null
功能:把输出发送给NULL,即从管道删除它,从而阻止输出到屏幕上。
实例:
Get-ChildItem | Out-Null #屏幕上无输出
Remove-Item(rm,del,erase,rmdir等)
功能:删除一个或多个对象(包括文件,文件夹,变量,别名,函数等)。
实例:
Remove-Item C:\Test\*.* #删除文件名中有"."的文件(即有扩展名),但不会删除文件夹。Remove-Item * -Include *.doc -Exclude *1* #删除当前文件夹下含.doc
的文件,但含1的文件不删除。Remove-Item -Path C:\Test\hidden-RO-file.txt -Force #-Force用于删除隐藏文件和只读文件。若路径含空格,需要用引号引起来!!!!!
Remove-Item使用-Recurse要注意,若同时使用了-Include参数,直接使用如Remove-Item -Path C:\Test\* -Recurse可能不会总是能正确的删除子目录和文件。因此建议下面的用法:
Get-ChildItem * -Include *.csv -Recurse | Remove-ItemGet-ChildItem | Where-Object Name -Like '*`[*' | ForEach-Object { Remove-Item -LiteralPath $_.Name } #删除当前目录下文件名中带有[的文件。-LiteralPath参数一个或多个位置的路径。
Test-Path
功能:判断路径下的所有元素是否存在。若有任何一个成员不存在,则返回$False.它也可以用来判断路径语法是否有效以及路径是一个目录(container)还是一个文件(leaf)。若路径是空白符或者空串,返回$False.若路径是$null,一组$null变量或者空数组,则返回一个非终端错误。
实例Test-Path -Path "C:\Documents and Settings\DavidC" #检查C:;Documents and Settings目录以及DavidC目录是否存在,若都存在,结果为True;否则为FalseTest-Path -Path $profileFalse #路径不存在Test-Path -Path $profile -IsValidTrue #路径的语法正确#测试目录除了.txt文件文件外,是否还有其他文件
#若E:\temp下只有aa.txt,则
#若路径有空格,则需用引号包裹Test-Path -Path "E:\test\*" -Exclude *.txt #若目录中只有.txt文件,则结果为FalseTest-Path -Path "E:\test" -Exclude *.txt #结果为True。!!!Test-Path -Path $profile -PathType leaf #若路径指向一个文件(有无文件扩展名均有效),则返回TrueTest-Path -Path $profile -PathType container #若路径指向一个目录,则返回TrueTest-Path $pshome\pwsh.exe -NewerThan "July 13, 2009" #文件修改日期在July 13, 2009之后,则返回True#以下三种情况,均出错
Test-Path $null
Test-Path $null, $null
Test-Path @()#当-Path值为空串或者空格时,返回false。(以下结果均为false)
Test-Path ' '
Test-Path ''
Start-Transcript
功能:将powershell会话的所有或者部分记录写入一个文本文件里。写入的内容包括用户敲击的命令以及要出现在控制台的输出。
特别的,使用Append参数时,如果目标文件无Byte Order Mark (BOM),则Start-Transcript默认在目标文件中使用ASCII编码。实例:
Start-Transcript #启动一个Transcript在默认的文件位置Start-Transcript -Path "C:\transcripts\transcript0.txt" -NoClobber
#在transcript0.txt中启动一个Transcript,-NoClobber参数防止已经存在的文件被覆盖。即transcript0.txt若存在,则命令执行失败。Stop-Transcript | out-null #停止一个由Start-Transcript启动的Transcript。同样,结束会话也可以结束一个Transcript
Set-Location(cd,sl,chdir)
功能:设置工作目录到指定的特定的路径。PowerShell 6.2支持+,-作为Path参数的值。实例:
Set-Location -Path "HKLM:\" #设置工作目录为HKLM驱动的根位置Set-Location -Path "Env:\" -PassThru #-PassThru参数命令powershell返回一个PathInfo对象,此对象代表Env:\位置。Set-Location -Path - #有版本限制。类似cd -
Rename-Item
功能:重命名一个对象示例:
Rename-Item -Path "c:\logfiles\daily_file.txt" -NewName "monday_file.txt" #重命名单个文件#将某个目录下的所有bak文件的名字中的'_20220427_050955'串删除,其他不动。
#注意-replace的用法。将文件名的开头和结尾分别命名为begin,end保留。
Get-ChildItem "C:\Backup\*.BAK" | Rename-Item -NewName {$_.Name -replace '(?.*)(_20220427_050955)(?.*)' ,'${begin}${end}'}
Get-WebAppPoolState
功能:获取iis 应用池(application pool)的运行状态。实例:
(Get-WebAppPoolState -Name "DefaultAppPool").Value#输出app application的状态。 值可能是Started等。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
