powershell常用命令(二)

注:更多命令详见

Get-Date

功能:获取一个DateTime对象,这个对象代表了当前的时间。

实例:
Get-Date
输出;
Tuesday, June 25, 2019 14:53:32

Get-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, Value

name       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盘的剩余空间。单位GB

Get-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-Item


Get-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;否则为False



Test-Path -Path $profile

False  #路径不存在

Test-Path -Path $profile -IsValid

True  #路径的语法正确

#测试目录除了.txt文件文件外,是否还有其他文件
#若E:\temp下只有aa.txt,则
#若路径有空格,则需用引号包裹
 Test-Path -Path "E:\test\*" -Exclude *.txt #若目录中只有.txt文件,则结果为False
 Test-Path -Path "E:\test" -Exclude *.txt  #结果为True。!!!

 Test-Path -Path $profile -PathType leaf  #若路径指向一个文件(有无文件扩展名均有效),则返回True
 Test-Path -Path $profile -PathType container #若路径指向一个目录,则返回True
 
 Test-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 '(?<begin>.*)(_20220427_050955)(?<end>.*)','${begin}${end}'}

Get-WebAppPoolState

功能:获取iis 应用池(application pool)的运行状态。

实例:
(Get-WebAppPoolState -Name "DefaultAppPool").Value#输出app application的状态。 值可能是Started等。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值