POWERSHELL 常见问题 (简体中文)

By | March 30, 2015

translated-china-v2


beta-v2-0


概念 : 最常问的Powershell问题。

您可以以不同方式使用此列表 :

  • 将指令复制/粘贴到脚本
  • 快速查看特定指令的语法
  • 提高您的技术知识
  • 发现新的指令
  • 为工作面试做准备

更新
2015年10月6日
笔者 Steve Renard
来源 chinese-simplified.powershell-guru.com
分类
75
问题
610


ACL
Active Directory
Alias
Arrays
Browsers
Certificates
Characters
CIM
Comments
COM Objects
Compare
Computer
Credentials
CSV
Culture
Date
Drives
Environment
Errors
Event Viewer
Files
Folders
Format Operator (-f)
Functions
GPO
GUI
Hardware
Hashtables
Help
History
Jobs
Keyboard
Loops
Math
Memory
Messages
Modules
Microsoft Excel
Microsoft Exchange
Microsoft Outlook
Microsoft SharePoint
Networking
Openfiles
Operators
Parameters
Password
Powershell ISE
Powershell v5
Printers
Processes
PSObject
Quest
Random
RDP
Regedit
Regex
Remote
Restore
Scheduled Tasks
Search
SCCM
Services
SMTP
Snapins
Sounds
Static .NET Methods
Strings
System
Try/Catch
Variables
Symantec Vault
Windows 2012
Windows Azure
Windows Forms
WMI
XML

System

如何确定我的PowerShell版本?

如何在另一个版本向后兼容运行PowerShell?
powershell.exe -Version 2.0

如何使用PowerShell在脚本中要求最小的PowerShell版本(3.0或更高)?
#Requires -Version 3.0

如何使用PowerShell要求脚本的管理权限?

如何使用PowerShell检查脚本的参数?
help -Name .\Get-ExchangeEnvironmentReport.ps1 -Full

如何使用Powershell取得当前用户的信息?
[Security.Principal.WindowsIdentity]::GetCurrent()

如何使用PowerShell创建、编辑和重新加载配置文件?

如何使用PowerShell在脚本中处理5秒/分钟的暂停?
Start-Sleep -Seconds 5
Start-Sleep -Seconds 300 # 5 minutes

如何使用PowerShell取得最后的开机时间?
(Get-CimInstance -ClassName win32_operatingsystem).LastBootUpTime

如何使用PowerShell取得类型加速器?

如何使用PowerShell列出启动程序?

如何使用PowerShell卸载应用程序?

如何使用PowerShell截屏整个桌面或活动窗口?
Take-ScreenShot -Screen -File 'C:\scripts\screenshot.png' -Imagetype JPEG
Repository : Take-ScreenShot

如何使用PowerShell取得MSMQ的信息计数?

如何使用PowerShell设置执行策略?

如何使用PowerShell创建快捷方式?

如何使用PowerShell将程序锁定或取消锁定到任务栏?

如何使用PowerShell打开资源管理器窗口?
[Diagnostics.Process]::Start('explorer.exe')
Invoke-Item -Path C:\Windows\explorer.exe

如何使用PowerShell列出设备驱动程序?
Get-WmiObject -Class Win32_PnPSignedDriver
Get-WindowsDriver -Online -All
driverquery.exe

如何使用PowerShell创建GUID?

如何使用PowerShell取得当前用户临时目录的位置?
[System.IO.Path]::GetTempPath()

如何使用PowerShell将路径和子路径连接成一个单一的路径?
Join-Path -Path C:\ -ChildPath \windows

如何使用PowerShell列出所有cmdlet的”Get-*”?
Get-Command -Verb Get

如何使用PowerShell列出特殊的系统文件夹?

如何使用PowerShell安装ISO/VHD文件?
Mount-DiskImage 'D:\ISO\file.iso' # ISO
Mount-DiskImage 'D:\VHD\file.vhd' # VHD

如何使用PowerShell检查已安装的.NET Framework版本?

如何使用PowerShell检查.NET Framework 4.5版是否已被安装?
(Get-ItemProperty -Path 'HKLM:\Software\Microsoft\NET Framework Setup\NDP\v4\Full' -EA 0).Version -like '4.5*'

如何使用PowerShell启动和停止转录(创建Windows PowerShell话路的记录)?
Start-Transcript -Path 'C:\scripts\transcript.txt
Stop-Transcript

如何使用PowerShell将当前目录切换到特定的位置?
Set-Location -Path 'C:\scripts'

如何使用PowerShell清除屏幕?
Clear-Host
cls # Alias

如何使用PowerShell更改显示分辨率?
Set-DisplayResolution -Width 1280 -Height 1024 -Force # Windows 2012

如何使用PowerShell设置“全屏”窗口?
mode.com 300

如何使用Powershell取得图象的尺寸(宽度和高度)?

如何使用PowerShell取得Windows的产品密钥?

Perfmon

如何使用PowerShell取得前5秒(10次)的当前“处理器时间的百分比”(平均)?
(Get-Counter '\Processor(_total)\% Processor Time' -SampleInterval 5 -MaxSamples 10).CounterSamples.CookedValue

Assemblies

如何使用PowerShell加载程序集?

如何使用PowerShell查看目前已加载的.NET程序集?

如何使用PowerShell查找GAC(全局程序集缓存)路径?

Clipboard

如何使用PowerShell将结果复制到剪贴板?

如何使用PowerShell取得剪贴板中的内容?
Add-Type -AssemblyName PresentationCore
[Windows.Clipboard]::GetText()

Hotfixes

如何使用PowerShell取得已安装的修补程序?
Get-HotFix -ComputerName $computer

如何使用Powershell在特定日期之前/之后安装修补程序?
Get-HotFix | Where-Object -FilterScript { $_.InstalledOn -lt ([DateTime]'01/01/2015') } # Before 01/01/2015
Get-HotFix | Where-Object -FilterScript {$_.InstalledOn -gt ([DateTime]'01/01/2015')} # After 01/01/2015

如何使用PowerShell检查修补程序是否已被安装?
Get-HotFix -Id KB2965142

如何使用PowerShell在远程计算机上安装修补程序?
Get-HotFix -ComputerName $computer

Pagefile

如何使用PowerShell取得Pagefile的信息?
Get-WmiObject -Class Win32_PageFileusage | Select-Object -Property Name, CurrentUsage, AllocatedBaseSize, PeakUsage, InstallDate

如何使用PowerShell取得Pagefile的推荐大小(MB)?
[Math]::Truncate(((Get-WmiObject -Class Win32_ComputerSystem).TotalPhysicalMemory) / 1MB) * 1.5

如何使用PowerShell在驱动器(D:)上创建Pagefile (4096 MB)?

如何使用PowerShell在驱动器(C:)上删除Pagefile ?

Maintenance

如何使用PowerShell检查驱动器的记录块/片段储存?

如何使用PowerShell检查驱动器的磁盘空间?

Up


Files

如何使用PowerShell打开文件?
Invoke-Item -Path 'C:\scripts\file.txt'
.'C:\scripts\file.txt'

如何使用PowerShell读取文件?
Get-Content -Path 'C:\scripts\file.txt'
gc "C:\scripts\file.txt" # Alias

如何使用PowerShell将输出写入文件里?

如何使用PowerShell取得当前脚本文件的全名?
$MyInvocation.MyCommand.Path

如何使用PowerShell压缩(compress/zip)文件?

如何使用PowerShell解压缩(uncompress/unzip)文件?

如何使用PowerShell查看ZIP存档中的文件?
Add-Type -AssemblyName 'System.IO.Compression.Filesystem'
[System.IO.Compression.ZipFile]::OpenRead($fileZIP)

如何使用PowerShell以KB显示文件的大小?
(Get-ChildItem -Path .\winsrv.dll).Length /1KB
(Get-ChildItem -Path .\winsrv.dll).Length /1MB
(Get-ChildItem -Path .\winsrv.dll).Length /1GB

如何使用PowerShell查找大于或小于1GB的文件?

如何使用PowerShell显示不连带扩展名的文件名称?
[System.IO.Path]::GetFileNameWithoutExtension('C:\Windows\system32\calc.exe') # Return calc

如何使用PowerShell显示文件的扩展名?
[System.IO.Path]::GetExtension('C:\scripts\file.txt') # Return .txt

如何使用PowerShell取得文件的文件版本?

如何使用PowerShell取得文件的哈希(hash)?
(Get-FileHash $file).Hash

如何使用PowerShell取得文件的MD5/SHA1值?
Get-FileHash $file -Algorithm MD5
Get-FileHash $file -Algorithm SHA1

如何使用PowerShell显示隐藏的文件?

如何使用PowerShell检查文件是否有扩展?

如何使​​用PowerShell将文件设置为“只读”?
Set-ItemProperty -Path .\file.txt -Name IsReadOnly -Value $true

如何使用PowerShell将文件的LastWriteTime(最后写入时间)属性更改为上周?
Set-ItemProperty -Path .\file.txt -Name LastWriteTime -Value ((Get-Date).AddDays(-7))
If not working, use Nirsoft tool: BulkFileChanger.

如何使用PowerShell创建新的文件?
New-Item -ItemType File -Path 'C:\scripts\file.txt' -Value 'FirstLine'

如何使用PowerShell重命名文件?
Rename-Item -Path 'C:\scripts\file.txt' -NewName 'C:\scripts\powershellguru2.txt'

如何使用PowerShell整体/成批重命名多个文件?
Get-ChildItem -Path C:\scripts\txt | Rename-Item -NewName { $_.Name -replace ' ', '_' }

如何使用PowerShell删除文件?
Remove-Item -Path 'C:\scripts\file.txt'

如何使用PowerShell显示文件的最新10行?
Get-Content -Path 'C:\scripts\log.txt' -Tail 10

如何使用PowerShell解封文件夹的数个文件?
Get-ChildItem -Path 'C:\scripts\Modules' | Unblock-File

如何使用PowerShell从文件中删除空行?
(Get-Content -Path file.txt) | Where-Object -FilterScript {$_.Trim() -ne '' } | Set-Content -Path file.txt

如何使用PowerShell检查文件是否存在?

如何使用PowerShell取得文件夹中最新/最旧创建的文件?

如何使用PowerShell从文件中移除重复的行?

如何使用PowerShell取得文件夹中已创建多过或少过1个月以内的文件?

如何使用PowerShell取得文件夹中已创建多过或少过1年以内的文件?

如何使用PowerShell将变量的值导出到文件?
Set-Content -Path file.txt -Value $variable

如何使用PowerShell计算文件夹中的文件(*.txt)数量?

如何使用PowerShell在多个文件中搜索字符串?
Select-String -Path 'C:\*.txt' -Pattern 'Steve'

如何使用PowerShell显示文件的第一/最后一行?

如何使用PowerShell显示文件的特定行号?

如何使用​​PowerShell计算文件的行数?

如何使用​​PowerShell计算文件的字符和单词的数量?

如何使用PowerShell下载文件?
Invoke-WebRequest -Uri 'http://www.nirsoft.net/utils/searchmyfiles.zip' -OutFile 'C:\tools\searchmyfiles.zip'

如何使用PowerShell显示文件的完整路径?
Resolve-Path -Path .\script.ps1 # Return C:\Scripts\script.ps1

Copy

如何使用PowerShell将一份文件复制到一个文件夹?
Copy-Item -Path 'C:\source\file.txt' -Destination 'C:\destination'

如何使用PowerShell将一份文件复制到多个文件夹?

如何使用PowerShell将多个文件复制到一个文件夹?
Get-ChildItem -Path 'C:\source' -Filter *.txt | Copy-Item -Destination 'C:\destination'

Up


Active Directory

Domain & Forest

Computers

Groups

Organizational Unit (OU)

Users

Domain & Forest

如何使用PowerShell查找活动目录中的全局编录(Global Catalog)服务器?
[System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().GlobalCatalogs

如何使用PowerShell查找在活动目录里的站点?
[System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().Sites

如何使用PowerShell查找当前的域控制器?

如何使用PowerShell查找一个域里所有的域控制器?

如何使用PowerShell查找失败的AD复制?
Get-ADReplicationFailure dc02.domain.com # Windows 8 and 2012

如何使用PowerShell查找活动目录里的森林墓碑生命周期?

如何使用PowerShell取得活动目录中林/域的细节?

如何使用PowerShell取得活动目录中“已删除对象”容器的路径?
(Get-ADDomain).DeletedObjectsContainer

如何使用PowerShell启用活动目录中的AD回收站功能?

如何使用PowerShell从活动目录中的回收站复原AD帐户?
Get-ADObject -Filter 'samaccountname -eq "powershellguru"' -IncludeDeletedObjects | Restore-ADObject

如何使用PowerShell查找FSMO角色?

如何使用PowerShell连接到特定的域控制器?
Get-ADUser -Identity $user -Server 'serverDC01'

如何使用PowerShell取得当前的登录服务器?

如何使用PowerShell在计算机上执行“gpupdate”?
Invoke-GPUpdate -Computer $computer -Force -RandomDelayInMinutes 0 # Windows 2012

Groups

如何使用PowerShell在活动目录中创建新群组?

如何使用PowerShell移除活动目录中的群组?
Remove-ADGroup -Identity 'PowershellGuru'

如何使用PowerShell将用户添加到活动目录中的群组?
Add-ADGroupMember "Powershell Guru" -Members powershellguru

如何使用PowerShell将用户从活动目录中的群组移除?
Remove-ADGroupMember 'Powershell Guru' -Members powershellguru

如何使用PowerShell查找活动目录中的空组(无成员)?
Get-ADGroup -Filter * -Properties Members | Where-Object -FilterScript {-not $_.Members}

如何使用PowerShell计算活动目录中的空组(无成员)?
(Get-ADGroup -Filter * -Properties Members | Where-Object -FilterScript {-not $_.Members}).Count

如何使用PowerShell取得活动目录中群组的成员?

如何使用PowerShell取得活动目录中含有递归成员的群组成员?

如何使用PowerShell计算活动目录中含有/不含递归成员的群组成员数量?

Users

如何使用PowerShell在活动目录中使用”Get-ADUser”过滤器的通配符?

如何使用PowerShell将活动目录中的用户移动到另一个OU?
Move-ADObject -Identity $dn -TargetPath 'OU=myOU,DC=domain,DC=com'

如何使用PowerShell为用户查找所有(嵌套)的成员?
Get-ADGroup -LDAPFilter "(member:1.2.840.113556.1.4.1941:=$($dn))"

如何使用PowerShell为用户取得(简称/截断)的成员?
(Get-ADUser -Identity $user -Properties MemberOf).MemberOf | ForEach-Object -Process {($_ -split ',')[0].Substring(3)} | Sort-Object

如何使用PowerShell为活动目录中的用户帐号重命名其名字(全名)、(显示名字)、给定名字(名)和姓氏(姓)?

如何使用PowerShell为活动目录中的用户帐号更改描述、办公室和电话号码?
Set-ADUser $samAccountName -Description 'IT Consultant' -Office 'Building B' -OfficePhone '12345'

如何使用PowerShell为活动目录中的用户帐号将截止日期设置为“31/12/2015”或“从不”?

如何使用PowerShell解锁活动目录中的用户帐号?
Unlock-ADAccount $samAccountName

如何使用PowerShell启用/禁用活动目录中的用户帐号?

如何使用PowerShell移除活动目录中的用户帐号?
Remove-ADUser $samAccountName

如何使用PowerShell为活动目录中的一个用户帐号重置密码?

如何使用PowerShell为活动目录中的数个用户帐号(整体)重置密码?

如何使用PowerShell为活动目录中的文件查找其拥有者?

如何使用PowerShell为活动目录中的用户查找OU(组织单位)?
[regex]::match("$((Get-ADUser -Identity $user -Properties DistinguishedName).DistinguishedName)",'(?=OU=)(.*\n?)').value

如何使用PowerShell查找活动目录中已被禁用的用户帐号?

如何使用PowerShell查找活动目录中已过期的用户帐号?
Search-ADAccount -AccountExpired

如何使用PowerShell查找活动目录中已被加锁的用户帐户?
Search-ADAccount -LockedOut

如何使用PowerShell查找活动目录中用户帐号的SID?
(Get-ADUser -Identity $user -Properties SID).SID.Value

如何使用PowerShell将活动目录中的用户名转换成SID?

如何使用PowerShell将活动目录中的SID转换成用户名?

如何使用PowerShell将活动目录中的用户账号分割专有名称(Distinguished Name)?

如何使用PowerShell查找活动目录中用户账号的创建/修改日期?
Get-ADUser -Identity $user -Properties whenChanged, whenCreated | Format-List -Property whenChanged, whenCreated

如何使用PowerShell为活动目录中的“用户”类显示可选性和强制性的属性?

如何使用Powershell为活动目录中的用户取得LDAP路径?

如何使用PowerShell为活动目录中的用户更改CN(规范名称)?
Rename-ADObject $((Get-ADUser -Identity $user -Properties DistinguishedName).DistinguishedName) -NewName 'Steve Renard'

如何使用PowerShell为活动目录中的用户取得父组织单位(OU parent)?

如何使用Powershell取得活动目录中用户的拥有者(帐户创建者)?

如何使用Powershell为活动目录中的用户转换PwdLastSet的属性?

Computers

如何使用PowerShell测试本地计算机和域之间的安全通道?
Test-ComputerSecureChannel

如何使用PowerShell修复本地计算机和域之间的安全通道?
Test-ComputerSecureChannel -Repair

如何使用PowerShell禁用活动目录中的计算机帐户?
Disable-ADAccount $computer

如何使用PowerShell查找活动目录中应用特定操作系统的计算机?

Organizational Unit (OU)

如何使用PowerShell在活动目录中创建组织单位(OU)?
New-ADOrganizationalUnit -Name 'STEVE' -Path 'DC=domain,DC=com'

如何使用PowerShell取得活动目录中组织单位(OU)的细节?
Get-ADOrganizationalUnit 'OU=STEVE,DC=domain,DC=com' -Properties *

如何使用PowerShell更改活动目录中组织单位(OU)的描述?
Set-ADOrganizationalUnit 'OU=STEVE,DC=domain,DC=com' -Description 'My description'

如何使用PowerShell启用/禁用活动目录中组织单位(OU)的误删?

如何使用PowerShell启用活动目录中所有组织单位(OU)的误删?

如何使用PowerShell删除活动目录中已被防止误删的组织单位(OU)?

如何使用PowerShell将活动目录中组织单位(OU)的DistinguishedName(专有名称)转换为CanonicalName(规范名称)?

如何使用PowerShell列出空的组织单位(OU)?

如何使用PowerShell取得群组的管理者?
(Get-ADGroup $dn -Properties Managedby).Managedby

Up


Regex (Regular Expression)

如何使用PowerShell以正则表达式提取IP地址v4(80.80.228.8)?
$example = 'The IP address is 80.80.228.8'
$ip = [regex]::match($example,'\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b').value

如何使用PowerShell以正则表达式提取含有分隔符“-”的MAC地址(C0-D9-62-39-61-2D)?
$example = 'The MAC address is C0-D9-62-39-61-2D'
$mac = [regex]::match($example,'([0-9A-F]{2}[-]){5}([0-9A-F]{2})').value

如何使用PowerShell以正则表达式提取含有分隔符“:”的MAC地址(C0:D9:62:39:61:2D)?
$example = 'The MAC address is C0:D9:62:39:61:2D'
$mac = [regex]::match($example,'((\d|([a-f]|[A-F])){2}:){5}(\d|([a-f]|[A-F])){2}').value

如何使用PowerShell以正则表达式提取日期(10/02/2015)?
$example = 'The date is 10/02/2015'
$date = [regex]::match($example,'(\d{2}\/\d{2}\/\d{4})').value

如何使用PowerShell以正则表达式提取URL(www.powershell-guru.com)?
$example = 'The URL is www.powershell-guru.com'
$url = [regex]::match($example,'[a-z]+[:.].*?(?=\s)').value

如何使用PowerShell以正则表达式提取电子邮件(user@domain.com)?
$example = 'The email is user@domain.com'
$email = [regex]::match($example,'(?i)\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b').value

如何使用PowerShell以正则表达式从字符串例子提取“guru”?
$example = 'www.powershell-guru.com'
[regex]::match($example,'(?<=-)(.*\n?)(?=.com)').value

如何使用PowerShell以正则表达式从字符串例子提取“guru.com”?
$example = 'www.powershell-guru.com'
[regex]::match($example,'(?<=-)(.*\n?)(?<=.)').value

如何使用PowerShell以正则表达式从字符串例子提取“powershell-guru.com”?
$example = 'www.powershell-guru.com'
[regex]::match($example,'(?<=www.)(.*\n?)').value

如何使用PowerShell以正则表达式从字符串例子提取“123”?
$example = 'Powershell123'
[regex]::match($example,'(\d+)').value

如何使用PowerShell以正则表达式从字符串例子提取“$”(美元符号)?
$example = 'Powershell`$123'
[regex]::match($example,'(\$)').value

如何使用PowerShell以正则表达式在字符串以一个字符(*.fr)取代另一个字符(*.com)?
$example = 'www.powershell-guru.com'
[regex]::Replace($example, '.com','.fr')

如何使用PowerShell以正则表达式逃脱一个字符串?
[regex]::Escape('\\server\share')

Up


Memory

如何使用PowerShell通过垃圾收集器强制记忆的收藏?
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()

如何使用PowerShell取得计算机里的随机存储器(RAM)的大小?

Up


Date

如何使用PowerShell取得当前日期?
Get-Date
[Datetime]::Now

如何使用PowerShell将日期显示为不同格式?

如何使用PowerShell将日期(Datetime)转换成日期(String)?

如何使用PowerShell将日期(String)转换为日期(Datetime)?

如何使用PowerShell计算两个日期的差别(日、小时、分或秒的数量)?
(New-TimeSpan -Start $dateStart -End $dateEnd).Days
(New-TimeSpan -Start $dateStart -End $dateEnd).Hours
(New-TimeSpan -Start $dateStart -End $dateEnd).Minutes
(New-TimeSpan -Start $dateStart -End $dateEnd).Seconds

如何使用PowerShell比较两个日期?
(Get-Date 2015-01-01) -lt (Get-Date 2015-01-30) # True
(Get-Date 2015-01-01) -gt (Get-Date 2015-01-30) # False

如何使用PowerShell将日期数组排列为“Datetime”?
$arrayDate | Sort-Object -Property {$_ -as [Datetime]}

如何使用PowerShell启动和停止秒表?
$chrono = [Diagnostics.Stopwatch]::StartNew()
$chrono.Stop()
$chrono

如何使用PowerShell取得一周内的当前日?
(Get-Date).DayOfWeek #Sunday

如何使用PowerShell取得昨天的日期?
(Get-Date).AddDays(-1)

如何使用PowerShell取得某个月(在2015年2月)的天数?
[DateTime]::DaysInMonth(2015, 2)

如何使用PowerShell查知是否闰年?
[DateTime]::IsLeapYear(2015)

如何使用PowerShell列出使用时区?
[System.TimeZoneInfo]::GetSystemTimeZones()

Up


Networking

如何使用PowerShell将URL编码(至ASCII格式)以及解码?

什么是与PowerShell等效的原生网络指令?

如何使用PowerShell取得IP地址?
Get-NetIPAddress # Windows 8.1 & Windows 2012
Get-NetIPConfiguration # Windows 8.1 & Windows 2012

如何使用PowerShell禁用IP地址v6(IPv6)?

如何使用PowerShell验证IP地址v4(IPv4)?
if([ipaddress]'10.0.0.1'){'validated'}

如何使用PowerShell查找外部IP地址?

如何使用PowerShell从IP地址查找主机名?
([System.Net.Dns]::GetHostEntry($IP)).Hostname

如何使用PowerShell从主机名查找IP地址?
([System.Net.Dns]::GetHostAddresses($computer)).IPAddressToString

如何使用PowerShell从主机名查找FQDN?
[System.Net.Dns]::GetHostByName($computer).HostName

如何使用PowerShell查找网络配置(IP、子网、网关和DNS)?

如何使用PowerShell查找MAC地址?
Get-CimInstance win32_networkadapterconfiguration | Select-Object -Property Description, Macaddress
Get-WmiObject -Class win32_networkadapterconfiguration | Select-Object -Property Description, Macaddress

如何使用PowerShell去ping一台计算机?

如何使用PowerShell检查计算机是否连接到互联网?

如何使用PowerShell执行网站的“whois”查询?
$whois = New-WebServiceProxy 'http://www.webservicex.net/whois.asmx?WSDL'
$whois.GetWhoIs('powershell-guru.com')

如何使用PowerShell取得公共IP(Geolocation)的细节?

如何使用PowerShell检查端口是开放/关闭?
New-Object -TypeName Net.Sockets.TcpClient -ArgumentList $computer, 135

如何使用PowerShell执行“tracert”指令?
Test-NetConnection www.google.com -TraceRoute

如何使用PowerShell修复家庭网络连接配置文件?
Get-NetAdapter | Format-Table -Property Name, InterfaceDescription, ifIndex -AutoSize # Windows 8.1
Set-NetConnectionProfile -InterfaceIndex 6 -NetworkCategory Private

如何使用PowerShell显示TCP端口连接?
netstat.exe -ano
Get-NetTCPConnection #Windows 8 and 2012

如何使用PowerShell将长的URL缩短成微小的URL?
$url = 'www.powershell-guru.com'
$tiny = Invoke-RestMethod -Uri "http://tinyurl.com/api-create.php?url=$url"

如何使用PowerShell取得代理设置?
Get-ItemProperty -Path HKCU:"Software\Microsoft\Windows\CurrentVersion\Internet Settings"

DNS

如何使用PowerShell检查本地计算机的DNS缓存?
ipconfig.exe /displaydns
Get-DnsClientCache #Windows 8 and 2012

如何使用PowerShell清除本地计算机的DNS缓存?
ipconfig.exe /flushdns
Start-Process -FilePath ipconfig -ArgumentList /flushdns -WindowStyle Hidden
Clear-DnsClientCache #Windows 8 and 2012

如何使用PowerShell清除远程计算机的DNS缓存?
Invoke-Command -ScriptBlock {Clear-DnsClientCache} -ComputerName computer01, computer02

如何使用PowerShell读取主机文件?
Get-Content -Path 'C:\Windows\system32\drivers\etc\hosts'

Up


Password

如何使用PowerShell生成随机的密码?
[Reflection.Assembly]::LoadWithPartialName('System.Web')
[System.Web.Security.Membership]::GeneratePassword(30,2)

如何使用PowerShell更改远程服务器管理员的本地密码?
$admin = [ADSI]('WinNT://server01/administrator,user')
$admin.SetPassword($password)
$admin.SetInfo()

如何使用PowerShell查找活动目录中帐户的密码过期日?

Up


Printers

如何使用PowerShell列出特定服务器的所有打印机?
Get-WmiObject -Query 'Select * From Win32_Printer' -ComputerName $computer

如何使用PowerShell列出特定服务器的所有端口?
Get-WmiObject -Class Win32_TCPIPPrinterPort -Namespace 'root\CIMV2' -ComputerName $computer

如何使用PowerShell更改打印机的注释/位置?

如何使用PowerShell清理打印机(取消所有作业)?
$printer = Get-WmiObject -Class win32_printer -Filter "Name='HP Deskjet 2540 series'"
$printer.CancelAllJobs()

如何使用PowerShell在打印机上打印测试页?
$printer = Get-WmiObject -Class win32_printer -Filter "Name='HP Deskjet 2540 series'"
$printer.PrintTestPage()

如何使用PowerShell取得打印机的打印队列?

Up


Regedit

Read

如何使用PowerShell列出注册表配置单元?
Get-ChildItem -Path Registry::

如何使用PowerShell取得注册表值和值类型?

如何使用PowerShell列出注册表项子项?

如何使用PowerShell以递归方式列出注册表项子项?
Get-ChildItem -Path 'HKLM:\SYSTEM' -Recurse -ErrorAction SilentlyContinue

如何使用PowerShell查找具有特定名称的子项?
Get-ChildItem -Path 'HKLM:\SOFTWARE' -Include *Plugin* -Recurse -ErrorAction SilentlyContinue

如何使用PowerShell返回注册表子项的名称而已?
(Get-ChildItem -Path 'HKLM:\SYSTEM').Name # Return HKEY_LOCAL_MACHINE\SYSTEM\ControlSet
Get-ChildItem -Path 'HKLM:\SYSTEM' -Name # Return ControlSet

如何使用PowerShell列出注册表值?
Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'

如何使用PowerShell读取特定的注册表值?
(Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').ProductName

如何使用PowerShell读取远程计算机的特定注册表值?

Write

如何使用PowerShell创建新的注册表项?
New-Item -Path 'HKCU:\Software\MyApplication'

如何使用PowerShell创建注册表值?
New-ItemProperty -Path 'HKCU:\Software\MyApplication' -Name 'Version' -Value '1.0'

如何使用PowerShell修改现有的注册表值?
Set-ItemProperty -Path 'HKCU:\Software\MyApplication' -Name 'Version' -Value '2.0'

Delete

如何使用PowerShell删除注册表值?
Remove-ItemProperty -Path 'HKCU:\Software\MyApplication' -Name 'Version'

如何使用PowerShell删除注册表项?
Remove-Item -Path 'HKCU:\Software\MyApplication' -Force

Test

如何使用PowerShell测试注册表项是否存在?
Test-Path -Path 'HKCU:\Software\MyApplication'

如何使用PowerShell测试注册表值是否存在?
(Get-Item -Path 'HKCU:\Software\MyApplication').GetValueNames() -contains 'Version'

Up


Strings

如何使用PowerShell从前面开始移除字符串的空白字符?
$string = ' PowershellGuru'
$string = $string.TrimStart()

如何使用PowerShell从后面开始移除字符串的空白字符?
$string = 'PowershellGuru '
$string = $string.TrimEnd()

如何使用PowerShell移除字符串的空白字符(前面和后面)?
$string = ' PowershellGuru '
$string = $string.Trim()

如何使用PowerShell将字符串转换为大写?
$string = 'powershellguru'
$string = $string.ToUpper()

如何使用PowerShell将字符串转换为小写?
$string = 'POWERSHELLGURU'
$string = $string.ToLower()

如何选择字符串“PowershellGuru”的子串“Powershell”?
$string.Substring(0,10)

如何使用PowerShell选择字符串“PowershellGuru”的子串“Guru”?
$string.Substring(10)

如何使用PowerShell选择“Powershell123Guru”的数字“123”?
$string = 'Powershell123Guru'
[regex]::match($string,'(\d+)').value

如何使用PowerShell从字符串“PowershellGuru”取得以零为基准的索引“Guru”?
$string.IndexOf('Guru') # 10

如何使用PowerShell检查字符串是否无价值或为空?
$string = $null
$string = ''
[string]::IsNullOrEmpty($string)

如何使用PowerShell检查字符串是否无价值、空或者只含空白字符?
$string = $null
$string = ''
$string = ' '
[string]::IsNullOrWhiteSpace($string)

如何使用PowerShell检查字符串是否含有特定字母?
$string = 'PowershellGuru'
$string.Contains('s')
[regex]::match($string,'s').Success

如何使用PowerShell返回字符串的长度?
$string.Length

如何使用PowerShell串联两个字符串?

如何使用Powershell匹配字符串中一个或数个的括号“[ ]”?
$string = '[PowershellGuru]'
$string -match '\[' # Only 1
$string -match '\[(.*)\]' # Several

如何使用Powershell匹配字符串中一个或数个的圆括号“( )”?
$string = '(PowershellGuru)'
$string -match '\(' # Only 1
$string -match '\((.*)\)' # Several

如何使用Powershell匹配字符串中一个或数个的波形括号“{ }”?
$string = '{PowershellGuru}'
$string -match '\{' # Only 1
$string -match '\{(.*)\}' # Several

如何使用Powershell匹配字符串中一个或数个的角括号”< >”?
$string = ''
$string -match '\<' # Only 1
$string -match "\<(.*)\>" # Several

如何使用PowerShell匹配字符串中的任何小写字母(abc)?
$string = 'POWERSHELLGURU'
$string -cmatch "^[a-z]*$" #False

如何使用PowerShell匹配字符串中的任何大写字母(ABC)?
$string = 'powershellguru'
$string -cmatch "^[A-Z]*$" #False

如何使用PowerShell匹配字符串中的”[p”(p小写)?
$string = '[powershellGuru]'
$string -cmatch '\[[a-z]\w+' #True

如何使用PowerShell匹配字符串中的”[P”(P大写)?
$string = '[PowershellGuru]'
$string -cmatch '\[[A-Z]\w+' #True

如何使用PowerShell以一行取代另一行?
$a = 'Line A'
$b = 'Line B'
$a = $a -replace $a, $b

如何使用PowerShell将除法运算转换为字符串(百分比)?
(1/2).ToString('P')

如何使用PowerShell将含数字的字符串进行排序?

如何使用PowerShell选择句子的最后一个单词?
$sentence = 'My name is Steve Renard'
$sentence.Split(' ')[-1] # Returns Renard

如何使用PowerShell取得句子的最大/长的单词?
$sentence = 'My name is Steve Renard'
$sentence.Split(' ') | Sort-Object -Property Length | Select-Object -Last 1 # Returns Renard

如何使用Powershell计算句子中某个字符串出现的次数?
$sentence = 'steve steve steve renard'
[regex]::Matches($sentence, 'steve').Count # Returns 3

如何使用PowerShell将字符串中的每个字符复制至字符数组?

如何使用PowerShell将字符串的第一个字母转换为大写?

如何使用Powershell垫/填满字符串的(左或右)?

如何使用PowerShell将一个字符串编码和解码至Base64?

如何使用PowerShell将数字转换(至或从)二进制?

如何使用PowerShell返回路径的最后一个父文件夹而已?

如何在使用PowerShell返回路径的最后一个项目而已?

Up


Math

如何使用PowerShell列出System.Math类的方法?
[System.Math] | Get-Member -Static -MemberType Method

如何使用PowerShell返回绝对值?
[Math]::Abs(-12) #Returns 12
[Math]::Abs(-12.5) # Returns 12.5

如何使用PowerShell返回正弦为指定数字的角度?
[Math]::ASin(1) #Returns 1,5707963267949

如何使用PowerShell返回取顶(ceiling)?
[Math]::Ceiling(1.4) #Returns 2
[Math]::Ceiling(1.9) #Returns 2

如何使用PowerShell返回取低(floor)?
[Math]::Floor(1.4) #Returns 1
[Math]::Floor(1.9) #Returns 1

如何使用PowerShell返回指定数字的自然(基数为e)对数?
[Math]::Log(4) #Returns 1,38629436111989

如何使用PowerShell返回指定数字的基数为10对数?
[Math]::Log10(4) #Returns 0,602059991327962

如何使用PowerShell返回两个值的最大值?
[Math]::Max(2,4) #Returns 4
[Math]::Max(-2,-4) #Returns -2

如何使用PowerShell返回两个值的最小值?
[Math]::Min(2,4) #Returns 2
[Math]::Max(-2,-4) #Returns -4

如何使用PowerShell返回一个提高到指定幂的数字?
[Math]::Pow(2,4) #Returns 16

如何使用PowerShell返回最接近积分值的十进制值?
[Math]::Round(3.111,2) #Returns 3,11
[Math]::Round(3.999,2) #Returns 4

如何使用PowerShell返回指定十进制数的积分部分?
[Math]::Truncate(3.111) #Returns 3
[Math]::Truncate(3.999) #Returns 3

如何使用Powershell返回指定数字的平方根?
[Math]::Sqrt(16) #Returns 4

如何使用PowerShell返回PI常数?
[Math]::Pi #Returns 3,14159265358979

如何使用PowerShell返回自然对数基数(常​​数为e)?
[Math]::E #Returns 2,71828182845905

如何使用PowerShell检查数字是偶数或奇数?
[bool]($number%2)

Up


Hashtables

如何使用PowerShell创建空的哈希表(hashtable)?
$hashtable = @{}
$hashtable = New-Object -TypeName System.Collections.Hashtable

如何使用PowerShell创建含项目的哈希表(hashtable)?

如何使用PowerShell创建含项目并以键/名(有序字典)排序的哈希表(hashtable)?

如何使用PowerShell将项目(键值对)添加至哈希表?
$hashtable.Add('Key4', 'Value4')

如何使用PowerShell取得哈希表的特定值?

如何使用PowerShell取得哈希表的最小值?

如何使用PowerShell取得哈希表的最大值?

如何使用PowerShell修改哈希表的项目?
$hashtable.Set_Item('Key1', 'Value1Updated')

如何使用PowerShell移除哈希表的项目?
$hashtable.Remove('Key1')

如何使用PowerShell清除哈希表?
$hashtable.Clear()

如何使用PowerShell检查特定键/值在哈希表的出现?
$hashtable.ContainsKey('Key3')
$hashtable.ContainsValue('Value3')

如何使用PowerShell以键/值在哈希表进行排序?
$hashtable.GetEnumerator() | Sort-Object -Property Name
$hashtable.GetEnumerator() | Sort-Object -Property Value -Descending

Up


Arrays

如何使用PowerShell创建空的数组?
$array = @()
$array = [System.Collections.ArrayList]@()

如何使用PowerShell创建含项目的数组?
$array = @('A', 'B', 'C')
$array = 'A', 'B', 'C'
$array = 'a,b,c'.Split(',')
$array = .{$args} a b c
$array = echo a b c

如何使用PowerShell将项目添加到数组?
$array += 'D'
[void]$array.Add('D')

如何使用PowerShell修改数组中的项目?
$array[0] = 'Z' # 1st item[0]

如何使用PowerShell检查数组的大小?
$array = 'A', 'B', 'C'
$array.Length # Returns 3

如何使用PowerShell检索数组中的一个/数个/全部项目?
$array = @('A', 'B', 'C')
$array[0] # One item (A)
$array[0] + $array[2] # Several items (A,C)
$array # All items (A,B,C)

如何使用PowerShell移除数组中空的项目?
$array = @('A', 'B', 'C', '')
$array = $array.Split('',[System.StringSplitOptions]::RemoveEmptyEntries) | Sort-Object # A,B,C

如何使用PowerShell检查某个项目是否存在数组里?
$array = @('A', 'B', 'C')
'A' | ForEach-Object -Process {$array.Contains($_)} # Returns True
'D' | ForEach-Object -Process {$array.Contains($_)} # Returns False

如何使用PowerShell查找数组中某个项目的索引号?
$array = @('A', 'B', 'C')
[array]::IndexOf($array,'A') # Returns 0

如何使用PowerShell互换数组中项目的次序?
$array = @('A', 'B', 'C')
[array]::Reverse($array) # C,B,A

如何使用Powershell在数组中随机生成一个项目?
$array | Get-Random

如何使用PowerShell按升序/降序方式排序数组?
$array = @('A', 'B', 'C')
$array | Sort-Object # A,B,C
$array | Sort-Object -Descending # C,B,A

如何使用PowerShell计算数组的项目数量?
$array.Count

如何使用PowerShell将一个数组添加到另一个数组?
$array1 = 'A', 'B', 'C'
$array2 = 'D', 'E', 'F'
$array3 = $array1 + $array2 # A,B,C,D,E,F

如何使用PowerShell查找数组的重复项?
$array = 'A', 'B', 'C', 'C'
($array | Group-Object | Where-Object -FilterScript {$_.Count -gt 1}).Values # Returns C

如何使用PowerShell移除数组的重复项?
$array = 'A', 'B', 'C', 'C'
$array = $array | Select-Object -Unique
$array # Returns A,B,C

如何使用PowerShell创建项目前缀为(”user01″,”user02″,… “user10″)的数组?
$array = 1..10 | ForEach-Object -Process { "user$_" }

Up


ACL

如何使用PowerShell列出AD用户的ACL?
(Get-Acl -Path "AD:\$dn").Access

如何使用PowerShell列出文件夹的ACL?
(Get-Acl -Path C:\scripts).Access

如何使用PowerShell列出AD用户的特定ACL权限条目(用户或群组)?

Up


Variables

什么是PowerShell中最常见的数据类型?

如何使用Powershell查找某些类型变量的最小值和最大值?

如何使用PowerShell测试数据类型?

如何使用PowerShell创建Here-String的变量?

如何使用PowerShell创建变量?
$powershellGuru = 'Hello'

如何使用PowerShell创建常数变量?
Set-Variable -Name powershellGuru -Value 2015 -Option Constant

如何使用PowerShell创建全局变量?
$Global:powershellGuru = 'Hello' # Note : creating global variables is not recommended

如何使用PowerShell读取变量?
$powershellGuru = 'Hello' # Create
$powershellGuru # Read
Get-Variable -Name powershellGuru -ValueOnly # Read

如何使用PowerShell检查变量的类型?
$powershellGuru.GetType()

如何使用PowerShell查找全局范​​围内的变量?
Get-Variable -Scope Global

如何使用PowerShell以名称取得特定变量?
Get-Variable -Include *Preference -Exclude W*

如何使用PowerShell为一个变量分配一个特定的数据类型?
[int64]$variable = 100
[string]$variable = 'PowershellGuru'

如何使用Powershell将多个变量初始化为相同的值?
$a = $b = $c = $d = $e = 0

如何使用PowerShell查知什么是变量“$_”的别名?
Get-Process | Where-Object -FilterScript {$_.Handles -gt 1000} # Using $_
Get-Process | Where-Object -FilterScript {$PSItem.Handles -gt 1000} # Using $PSItem (since version 3)

如何使用PowerShell删除以“count”为起始名称的变量?
Remove-Variable -Name count*

如何使用PowerShell取得当地环境变量?
Get-ChildItem -Path Env:

如何使用PowerShell逐行地取得路径环境变量?
($env:Path) -replace(';', "`n")
[Environment]::GetEnvironmentVariable('Path') -replace(';', "`n")

如何使用PowerShell将新路径(例. C:\SysinternalsSuite)添加至路径环境变量?
$env:Path += ';C:\SysinternalsSuite'
$env:Path = $env:Path + ';C:\SysinternalsSuite'

如何使用PowerShell串联变量?
$a = 'Powershell'
$b = '- Guru'
$c = $a + $b

如何以PowerShell使用ErrorVariable(错误变量)?
Get-Process -Name abcde -ErrorAction SilentlyContinue -ErrorVariable AccessDenied
$AccessDenied | Select-Object -Property Exception
$AccessDenied | Select-Object -Property TargetObject

如何使用PowerShell启用/禁用“Option Explicit”的等效(VBScript:必须声明变量)?

Up


Static .NET Methods

如何使用PowerShell获得静态成员?
[DateTime] | Get-Member -Static

Up


Sounds

如何使用PowerShell播放提示“beep”音?
[System.Console]::Beep()

如何使用PowerShell播放星号“asterisk”音?
[System.Media.SystemSounds]::Asterisk.Play()

如何使用PowerShell播放感叹号“exclamation”音?
[System.Media.SystemSounds]::Exclamation.Play()

如何使用PowerShell取得可用的声音?
[System.Media.SystemSounds] | Get-Member -Static

如何使用PowerShell播放WAV音?
$soundPlayer = New-Object -TypeName System.Media.SoundPlayer -ArgumentList "$env:windir\Media\Ringout.wav"
$soundPlayer.Play()

$soundPlayer.PlayLooping()
$soundPlayer.Stop()

如何使用PowerShell激活语音书写的文字?
Add-Type -AssemblyName System.Speech
$speech = New-Object -TypeName System.Speech.Synthesis.SpeechSynthesizer
$speech.Speak('Hello PowershellGuru')

Up


XML

如何使用PowerShell读取XML文件?
[xml]$sitemap = Get-Content -Path .\sitemap.xml
$sitemap.urlset.url

如何使用PowerShell将数据导出为XML文件?
Get-Process | Export-Clixml -Path C:\scripts\processes.xml

如何使用PowerShell从CLIXML文件导入数据?
$importProcesses = Import-Clixml -Path C:\scripts\processes.xml

Up


GUI

如何使用PowerShell创建基本的GUI(Windows Form)?

Up


Characters

如何使用PowerShell将ASCII值转换为字符?
[char]64

如何使用PowerShell将字符转换为ASCII值?
[int][char]'@'

如何使用PowerShell生成英文字母?
[char[]](97..122)

Up


Compare

如何使用PowerShell比较2个数组?