0
点赞
收藏
分享

微信扫一扫

PowerShell - 基础参考

认识PowerShell

运行PowerShell窗口

点击开始菜单 ->WindowsPoweShell 文件夹:

  • Windows PowerShell 命令行窗口
  • Windows PowerShell 命令行窗口(x86)
  • Windows PowerShell 集成脚本环境
  • Windows PowerShell 继承脚本环境(x86)

PowerShell - 基础参考_PowerShell

打开窗口时,右键选择以管理员身份运行

查看PowerShell版本

PS C:\Users\Administrator> $PSVersionTable

Name Value
---- -----
PSVersion 5.1.17763.2090
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17763.2090
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1

PS C:\Users\Administrator> $PSVersionTable.PSVersion

Major Minor Build Revision
----- ----- ----- --------
5 1 17763 2090

获得PowerShell命令

PS C:\Users\Administrator> Get-Command

筛选PowerShell命令

获取动词是Get的命令

PS C:\Users\Administrator> Get-Command -Verb Get

获取名词是Service的命令

PS C:\Users\Administrator> Get-Command -Noun Service

获取动词是Get,名词是Service的命令

PS C:\Users\Administrator> Get-Command -Verb Get -Noun Service

CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-Service 3.1.0.0 Microsoft.PowerShell.Management

获取包含Process的命令(*为通配符,代表任意字符,包括 0 个字符) 

PS C:\Users\Administrator> Get-Command *Process*

CommandType Name Version Source
----------- ---- ------- ------
Function Get-AppvVirtualProcess 1.0.0.0 AppvClient
Function Start-AppvVirtualProcess 1.0.0.0 AppvClient
Cmdlet ConvertTo-ProcessMitigationPolicy 1.0.11 ProcessMitigations
Cmdlet Debug-Process 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet Enter-PSHostProcess 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Exit-PSHostProcess 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Get-Process 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet Get-ProcessMitigation 1.0.11 ProcessMitigations
Cmdlet Get-PSHostProcessInfo 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Set-ProcessMitigation 1.0.11 ProcessMitigations
Cmdlet Start-Process 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet Stop-Process 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet Wait-Process 3.1.0.0 Microsoft.PowerShell.Management
Application qprocess.exe 10.0.17... C:\Windows\system32\qprocess.exe

使用PowerShell帮助

更新帮助

Update-Help

查询Get-Service命令的使用帮助

PS C:\Users\Administrator> Get-Help -Name Get-Service

查询Get-Service命令的使用帮助(包括使用案例) 

PS C:\Users\Administrator> Get-Help -Name Get-Service -Examples

查询Get-Service命令的使用帮助(详细说明) 

PS C:\Users\Administrator> Get-Help -Name Get-Service -Details

查询Get-Service命令的使用帮助(在线) 

PS C:\Users\Administrator> Get-Help -Name Get-Service -Online

如何使用关于帮助

Get-Help -Name about*
Get-Help -Name about_Pipelines
Get-Help -Name about_Variables
Get-Help -Name about_Arrays
Get-Help -Name about_Hash_Tables
Get-Help -Name about_Parameters
Get-Help -Name about_Functions
Get-Help -Name about_Modules
Get-Help -Name about_Scripts
Get-Help -Name about_Execution_Policies
Get-Help -Name about_Foreach
Get-Help -Name about_If

案例:

PS C:\Users\Administrator> Get-Help -Name Get-Service -Online

使用方式一

Get-Service [[-Name]<String[]>]

最外层和-Name的[]表示可选项

<String>表示字符类型,后面的[]表示可以多个

例如:

Get-Service

Get-Service -Name WinRM, Spooler

Get-Service WinRM, Spooler

[-ComputerName<String[]>]

[-DependentServices]

[-RequiredServices]

[-Include<String[]>]

[-Exclude<String[]>]

[<CommonParameters>]

使用PowerShell注意

Powershell很强大,同时也需要安全的使用

Get-Service会获取本机上的所有服务的信息

那么Get-Service | Stop-service会怎么样呢?

当我们不确定命令的功能时,可以使用参数-WhatIf

PS C:\Users\Administrator> Get-Service | Stop-Service -WhatIf

使用-WhatIf参数时,系统会告诉我们将要做什么,但是并未执行

PowerShell常用命令

管道命令 |

PS C:\Users\Administrator> Get-Service -Name Spooler

Status Name DisplayName
------ ---- -----------
Running Spooler Print Spooler

PS C:\Users\Administrator> Get-Service -Name Spooler | Stop-Service

PS C:\Users\Administrator> Get-Service -Name Spooler

Status Name DisplayName
------ ---- -----------
Stopped Spooler Print Spooler

Get-Help -Name Stop-Service -Online

-Name

Specifies the service names of the services to stop. Wildcard characters are permitted.

Type:

​​String​​[]

Aliases:

ServiceName

Position:

0

Default value:

None

Accept pipeline input:

True

Accept wildcard characters:

True

Get-Member

PS C:\Users\Administrator> Get-Service -Name Spooler | Get-Member

TypeName:System.ServiceProcess.ServiceController

Name MemberType Definition
---- ---------- ----------
Name AliasProperty Name = ServiceName
RequiredServices AliasProperty RequiredServices = ServicesDependedOn
Disposed Event System.EventHandler Disposed(System.Object, System.EventArgs)
Close Method void Close()
Continue Method void Continue()
CreateObjRef Method System.Runtime.Remoting.ObjRef CreateObjRef(type requestedType)
Dispose Method void Dispose(), void IDisposable.Dispose()
Equals Method bool Equals(System.Object obj)
ExecuteCommand Method void ExecuteCommand(int command)
GetHashCode Method int GetHashCode()
GetLifetimeService Method System.Object GetLifetimeService()
GetType Method type GetType()
InitializeLifetimeService Method System.Object InitializeLifetimeService()
Pause Method void Pause()
Refresh Method void Refresh()
Start Method void Start(), void Start(string[] args)
Stop Method void Stop()
WaitForStatus Method void WaitForStatus(System.ServiceProcess.ServiceControllerStatus desiredStatus), void WaitForStatus(System.ServiceProc...
CanPauseAndContinue Property bool CanPauseAndContinue {get;}
CanShutdown Property bool CanShutdown {get;}
CanStop Property bool CanStop {get;}
Container Property System.ComponentModel.IContainer Container {get;}
DependentServices Property System.ServiceProcess.ServiceController[] DependentServices {get;}
DisplayName Property string DisplayName {get;set;}
MachineName Property string MachineName {get;set;}
ServiceHandle Property System.Runtime.InteropServices.SafeHandle ServiceHandle {get;}
ServiceName Property string ServiceName {get;set;}
ServicesDependedOn Property System.ServiceProcess.ServiceController[] ServicesDependedOn {get;}
ServiceType Property System.ServiceProcess.ServiceType ServiceType {get;}
Site Property System.ComponentModel.ISite Site {get;set;}
StartType Property System.ServiceProcess.ServiceStartMode StartType {get;}
Status Property System.ServiceProcess.ServiceControllerStatus Status {get;}
ToString ScriptMethod System.Object ToString();

根据上面的结果,我们可以:

PS C:\Users\Administrator> (Get-Service -Name Spooler).StartType
Automatic

PS C:\Users\Administrator> (Get-Service -Name Spooler).Status
Running

PS C:\Users\Administrator> (Get-Service -Name Spooler).CanStop
True

PS C:\Users\Administrator> (Get-Service -Name Spooler).Stop()

PS C:\Users\Administrator> (Get-Service -Name Spooler).Status
Stopped

Get-Date

Get-Date

PS C:\Users\Administrator> Get-Date

202266 23:26:17

PS C:\Users\Administrator> Get-Date -Format yyyyMMdd
20220606

PS C:\Users\Administrator> (Get-Date).Year
2022

PS C:\Users\Administrator> (Get-Date).Month
6

PS C:\Users\Administrator> (Get-Date).Day
6

PS C:\Users\Administrator> (Get-Date).AddDays(6)

2022612 23:27:19

Get-Date | Ge-Member

PS C:\Users\Administrator> Get-Date | Get-Member

TypeName:System.DateTime

Name MemberType Definition
---- ---------- ----------
Add Method datetime Add(timespan value)
AddDays Method datetime AddDays(double value)
AddHours Method datetime AddHours(double value)
AddMilliseconds Method datetime AddMilliseconds(double value)
AddMinutes Method datetime AddMinutes(double value)
AddMonths Method datetime AddMonths(int months)
AddSeconds Method datetime AddSeconds(double value)
AddTicks Method datetime AddTicks(long value)
AddYears Method datetime AddYears(int value)
CompareTo Method int CompareTo(System.Object value), int CompareTo(datetime value), int IComparable.CompareTo(System.Object obj), int IComp...
Equals Method bool Equals(System.Object value), bool Equals(datetime value), bool IEquatable[datetime].Equals(datetime other)
GetDateTimeFormats Method string[] GetDateTimeFormats(), string[] GetDateTimeFormats(System.IFormatProvider provider), string[] GetDateTimeFormats(c...
GetHashCode Method int GetHashCode()
GetObjectData Method void ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.Streami...
GetType Method type GetType()
GetTypeCode Method System.TypeCode GetTypeCode(), System.TypeCode IConvertible.GetTypeCode()
IsDaylightSavingTime Method bool IsDaylightSavingTime()
Subtract Method timespan Subtract(datetime value), datetime Subtract(timespan value)
ToBinary Method long ToBinary()
ToBoolean Method bool IConvertible.ToBoolean(System.IFormatProvider provider)
ToByte Method byte IConvertible.ToByte(System.IFormatProvider provider)
ToChar Method char IConvertible.ToChar(System.IFormatProvider provider)
ToDateTime Method datetime IConvertible.ToDateTime(System.IFormatProvider provider)
ToDecimal Method decimal IConvertible.ToDecimal(System.IFormatProvider provider)
ToDouble Method double IConvertible.ToDouble(System.IFormatProvider provider)
ToFileTime Method long ToFileTime()
ToFileTimeUtc Method long ToFileTimeUtc()
ToInt16 Method int16 IConvertible.ToInt16(System.IFormatProvider provider)
ToInt32 Method int IConvertible.ToInt32(System.IFormatProvider provider)
ToInt64 Method long IConvertible.ToInt64(System.IFormatProvider provider)
ToLocalTime Method datetime ToLocalTime()
ToLongDateString Method string ToLongDateString()
ToLongTimeString Method string ToLongTimeString()
ToOADate Method double ToOADate()
ToSByte Method sbyte IConvertible.ToSByte(System.IFormatProvider provider)
ToShortDateString Method string ToShortDateString()
ToShortTimeString Method string ToShortTimeString()
ToSingle Method float IConvertible.ToSingle(System.IFormatProvider provider)
ToString Method string ToString(), string ToString(string format), string ToString(System.IFormatProvider provider), string ToString(strin...
ToType Method System.Object IConvertible.ToType(type conversionType, System.IFormatProvider provider)
ToUInt16 Method uint16 IConvertible.ToUInt16(System.IFormatProvider provider)
ToUInt32 Method uint32 IConvertible.ToUInt32(System.IFormatProvider provider)
ToUInt64 Method uint64 IConvertible.ToUInt64(System.IFormatProvider provider)
ToUniversalTime Method datetime ToUniversalTime()
DisplayHint NoteProperty DisplayHintType DisplayHint=DateTime
Date Property datetime Date {get;}
Day Property int Day {get;}
DayOfWeek Property System.DayOfWeek DayOfWeek {get;}
DayOfYear Property int DayOfYear {get;}
Hour Property int Hour {get;}
Kind Property System.DateTimeKind Kind {get;}
Millisecond Property int Millisecond {get;}
Minute Property int Minute {get;}
Month Property int Month {get;}
Second Property int Second {get;}
Ticks Property long Ticks {get;}
TimeOfDay Property timespan TimeOfDay {get;}
Year Property int Year {get;}
DateTime ScriptProperty System.Object DateTime {get=if ((& { Set-StrictMode -Version 1; $this.DisplayHint }) -ieq "Date")...

Get-WimObject

Get-WmiObject

# BIOS信息
PS C:\Users\Administrator> Get-WmiObject -Class Win32_BIOS

SMBIOSBIOSVersion : F5
Manufacturer : American Megatrends Inc.
Name : F5
SerialNumber : To be filled by O.E.M.
Version : ALASKA - 1072009

# 逻辑磁盘信息
PS C:\Users\Administrator> Get-WmiObject -Class Win32_Logicaldisk

DeviceID : C:
DriveType : 3
ProviderName :
FreeSpace : 29718904832
Size : 239410868224
VolumeName :

DeviceID : D:
DriveType : 3
ProviderName :
FreeSpace : 269805010944
Size : 1000202039296
VolumeName : Local Disk

  • Get-CimInstance -ClassName Win32_BIOS(支持Tab命令补全)
  • Get-CimInstance -ClassName Win32_Logicaldisk(支持Tab命令补全)

Get-ADUser


Get-Command & Get-Help


变量,数组,哈希表

变量

数组

哈希表

PowerShell操作符

PowerShell比较操作符

PowerShell逻辑操作符

循环和判断

For

Foreach

If

导入,导出数据

TXT文本数据

CSV数据

脚本

执行策略

Diskinfo.ps1

举报

相关推荐

0 条评论