POWERSHELL 常見問題 (繁體中文)

By | May 14, 2015

translated-china-traditional-v2


beta-v2-0


概念 : PowerShell中最常見的問題。

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

  • 複製/貼上指令到腳本
  • 快速查看特定指令的語法
  • 改善你的專業知識
  • 發現新的指令
  • 為工作準備面試


更新
2015年10月6日
筆者 Steve Renard
資料來源 chinese-traditional.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壓縮文件?

如何使用PowerShell解壓文件?

如何使用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在活動目錄(Active Directory)尋找通用類別目錄 (Global Catalog servers)?
[System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().GlobalCatalogs

如何使用PowerShell尋找活動目錄(Active Directory)的網站?
[System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().Sites

如何使用PowerShell尋找當前的網域控制站?

如何使用PowerShell尋找所有的網域控制站?

如何使用PowerShell尋找AD複製故障?
Get-ADReplicationFailure dc02.domain.com # Windows 8 and 2012

如何使用PowerShell尋找活動目錄(Active Directory)的樹系之下墓碑時間?

如何使用PowerShell取得活動目錄(Active Directory)林/域中的詳細信息?

如何使用PowerShell取得活動目錄(Active Directory)“已刪除項目”垃圾桶的路徑?
(Get-ADDomain).DeletedObjectsContainer

如何使用PowerShell啟用活動目錄(Active Directory)中的AD回收站功能?

如何使用PowerShell恢復活動目錄(Active Directory)回收站的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建立活動目錄(Active Directory)的新群組?

如何使用PowerShell刪除活動目錄(Active Directory)群組?
Remove-ADGroup -Identity 'PowershellGuru'

如何使用PowerShell新增用戶到活動目錄(Active Directory)群組?
Add-ADGroupMember "Powershell Guru" -Members powershellguru

如何使用PowerShell刪除活動目錄(Active Directory)群組的用戶?
Remove-ADGroupMember 'Powershell Guru' -Members powershellguru

如何使用PowerShell尋找活動目錄(Active Directory)空群組(沒任何成員)?
Get-ADGroup -Filter * -Properties Members | Where-Object -FilterScript {-not $_.Members}

如何使用PowerShell計算活動目錄(Active Directory)空群組(沒任何成員)的數目?
(Get-ADGroup -Filter * -Properties Members | Where-Object -FilterScript {-not $_.Members}).Count

如何使用PowerShell取得活動目錄(Active Directory)群組的成員?

如何使用PowerShell取得活動目錄(Active Directory)群組遞歸成員?

如何使用PowerShell計算活動目錄(Active Directory)群組的成員有/沒有遞歸成員?

Users

如何使用PowerShell在活動目錄(Active Directory)使用“GET-ADUser”過濾通配?

如何使用PowerShell在活動目錄(Active Directory)中將用戶轉移到另一個OU?
Move-ADObject -Identity $dn -TargetPath 'OU=myOU,DC=domain,DC=com'

如何使用PowerShell尋找所有(Nested嵌套)的成員的用戶?
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為活動目錄(Active Directory)中的用戶賬號重新命名名稱(全名),(顯示名稱),指定人名(名字)和姓(姓氏)?

如何使用PowerShell為活動目錄(Active Directory)中的用戶賬號更改描述,辦公室,以及電話號碼?
Set-ADUser $samAccountName -Description 'IT Consultant' -Office 'Building B' -OfficePhone '12345'

如何使用PowerShell為活動目錄(Active Directory)中的用戶賬號設置失效日期“31/12/2015”或“從不”?

如何使用PowerShell為活動目錄(Active Directory)中的用戶賬號解除鎖定?
Unlock-ADAccount $samAccountName

如何使用PowerShell啟用/禁用活動目錄(Active Directory)的用戶帳戶?

如何使用PowerShell刪除活動目錄(Active Directory)的用戶帳戶?
Remove-ADUser $samAccountName

如何使用PowerShell重置活動目錄(Active Directory)的用戶帳戶密碼?

如何使用PowerShell重置活動目錄(Active Directory)多個用戶帳戶(散裝)的密碼?

如何使用PowerShell尋找活動目錄(Active Directory)中的文件主人?

如何使用PowerShell尋找活動目錄(Active Directory)的用戶 OU(組織單位)?
[regex]::match("$((Get-ADUser -Identity $user -Properties DistinguishedName).DistinguishedName)",'(?=OU=)(.*\n?)').value

如何使用PowerShell尋找活動目錄(Active Directory)禁用的用戶帳戶?

如何使用PowerShell尋找活動目錄(Active Directory)過期的用戶帳戶?
Search-ADAccount -AccountExpired

如何使用PowerShell尋找活動目錄(Active Directory)鎖定的用戶帳戶?
Search-ADAccount -LockedOut

如何使用PowerShell尋找活動目錄(Active Directory)SID的用戶帳戶?
(Get-ADUser -Identity $user -Properties SID).SID.Value

如何使用PowerShell在活動目錄(Active Directory)將使用者名稱轉換為SID?

如何使用PowerShell在活動目錄(Active Directory)將用SID轉換為使用者名稱?

如何使用PowerShell在活動目錄(Active Directory)分割用戶帳戶的專有名稱?

如何使用PowerShell在活動目錄(Active Directory)尋找用戶帳戶的建立/修改日期?
Get-ADUser -Identity $user -Properties whenChanged, whenCreated | Format-List -Property whenChanged, whenCreated

如何使用PowerShell在活動目錄(Active Directory) 顯示“用戶”種類的可選性和強制性的特性?

如何使用PowerShell在活動目錄(Active Directory) 取得LDAP路徑?

如何使用PowerShell在活動目錄(Active Directory) 改變用戶的CN(正準名稱)?
Rename-ADObject $((Get-ADUser -Identity $user -Properties DistinguishedName).DistinguishedName) -NewName 'Steve Renard'

如何使用PowerShell在活動目錄(Active Directory) 取得用戶組織單位(OU)的父層?

如何使用PowerShell在活動目錄(Active Directory)取得用戶建立人(帳戶建立人)?

如何使用PowerShell在活動目錄(Active Directory)轉換用戶的pwdLastSet屬性?

Computers

如何使用PowerShell測試本地電腦和域名之間的安全通道?
Test-ComputerSecureChannel

如何使用PowerShell修復本地電腦和域名之間的安全通道?
Test-ComputerSecureChannel -Repair

如何使用PowerShell在活動目錄(Active Directory)禁用電腦帳戶?
Disable-ADAccount $computer

如何使用PowerShell在活動目錄(Active Directory)尋找特定操作系統的電腦?

Organizational Unit (OU)

如何使用PowerShell在活動目錄(Active Directory)建立一個組織單位(OU)?
New-ADOrganizationalUnit -Name 'STEVE' -Path 'DC=domain,DC=com'

如何使用PowerShell在活動目錄(Active Directory)取得組織單位(OU)的詳細信息?
Get-ADOrganizationalUnit 'OU=STEVE,DC=domain,DC=com' -Properties *

如何使用PowerShell在活動目錄(Active Directory)更改組織單位(OU)的描述?
Set-ADOrganizationalUnit 'OU=STEVE,DC=domain,DC=com' -Description 'My description'

如何使用PowerShell啟用/禁用活動目錄(Active Directory)組織單位(OU)的意外刪除?

如何使用PowerShell啟用活動目錄(Active Directory)所有組織單位(OU)的意外刪除?

如何使用PowerShell刪除在活動目錄(Active Directory)意外保護的組織單位(OU)?

如何使用PowerShell在活動目錄(Active Directory)轉換組織單位(OU)的專有名稱至正準名稱?

如何使用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更換正則表達式字符串的一個字符(*.com)至另一個字符(*.fr)?
$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轉換日期(日期時間)至日期(字符串)?

如何使用PowerShell轉換日期(字符串)至日期(日期時間)?

如何使用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位址(地理位置)的詳細信息?

如何使用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尋找活動目錄(Active Directory)帳戶的密碼過期日期?

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()

如何使用PowerShell選擇字符串“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 class 的方法?
[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返回上限值?
[Math]::Ceiling(1.4) #Returns 2
[Math]::Ceiling(1.9) #Returns 2

如何使用PowerShell返回下限值?
[Math]::Floor(1.4) #Returns 1
[Math]::Floor(1.9) #Returns 1

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

如何使用PowerShell返回指定數字的函數 (base 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添加項目(key-value pair 鍵值對)至散列表(hashtable)?
$hashtable.Add('Key4', 'Value4')

如何使用PowerShell取得散列表(hashtable)的特定值?

如何使用PowerShell取得散列表(hashtable)的最小值?

如何使用PowerShell取得散列表(hashtable)的最大值?

如何使用PowerShell修改散列表(hashtable)的項目?
$hashtable.Set_Item('Key1', 'Value1Updated')

如何使用PowerShell刪除散列表(hashtable)的項目?
$hashtable.Remove('Key1')

如何使用PowerShell清除散列表(hashtable)?
$hashtable.Clear()

如何使用PowerShell檢查散列表(hashtable)特定鍵/值的存在?
$hashtable.ContainsKey('Key3')
$hashtable.ContainsValue('Value3')

如何使用PowerShell以鍵/值在散列表(hashtable)進行排序?
$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