文章目錄
PowerShell 基本語法筆記
最近工作上的需要,用了 PowerShell 語法來處理,幾乎各式各樣的花式需求都可以達成,怪不得百敬老師非常推薦 PowerShell ,功能十分強大呀,只可惜學習資源比較零碎,所以特別紀錄一下最近用到的語法,避免很快忘記又查了老半天XD
數字處理
比較大小
$a -gt $b #($a 是否大於 $b)
字串處理
字串分割
1-1.
$$serveritem -split ','
1-2.
$serveritem.Split(',')
檢查是否為空值 (string.IsNullOrWhiteSpace)
[string]::IsNullOrWhiteSpace($serveritem.ExcludeFolder)
比對字串開頭
$stringVariable.StartsWith('startString','CurrentCultureIgnoreCase')
字串比對
$stringVariable -eq "Value"
檔案處理
檔案內容轉成 json
Get-Content -Raw -Path $filelocation | ConvertFrom-Json
檔案壓縮與解壓縮
PowerShell v5
壓縮
語法
Compress-Archive -Path $sourceFolder -DestinationPath $archiveFile
實際範例
Compress-Archive -Path D:\Downloads\Demo -DestinationPath D:\Downloads\demo.zip
解壓縮
語法
Expand-Archive -Path $archiveFile -DestinationPath $targetFolder
實際範例
Expand-Archive -Path D:\Downloads\demo.zip -DestinationPath D:\Downloads\testPS
other
壓縮
語法
Add-Type -AssemblyName 'System.IO.Compression.Filesystem' [System.IO.Compression.ZipFile]::CreateFromDirectory($folderSource,$fileDestination)
實際例範
$folderSource='D:\Downloads\Demo' $fileDestination='D:\Downloads\demo.zip' Add-Type -AssemblyName 'System.IO.Compression.Filesystem' [System.IO.Compression.ZipFile]::CreateFromDirectory($folderSource,$fileDestination)
解壓
語法
Add-Type -AssemblyName 'System.IO.Compression.Filesystem' [System.IO.Compression.ZipFile]::ExtractToDirectory($fileSource, $folderDestination)
實際範例
$fileSource='D:\Downloads\demo.zip' $folderDestination='D:\Downloads\testPS' Add-Type -AssemblyName 'System.IO.Compression.Filesystem' [System.IO.Compression.ZipFile]::ExtractToDirectory($fileSource, $folderDestination)
List 處理
多個 List 取交集或是聯集
$a = (1,2,3,4) $b = (1,3,4,5)
1-1. 聯集
$a + $b | select -uniq #union
1-2. 交集
$a | ?{$b -contains $_} #intersection
List 加入 item
2-1. 宣告個空的 List
$a = New-Object System.Collections.ArrayList
2-2. 加入項目
$a.Add('data') $a.Add('test')
Credential 相關
指定 Credential
#用來儲存密碼(僅需輸入一次,會加密儲存) read-host -assecurestring | convertfrom-securestring | out-file C:\securestring.txt #取出密碼(以下兩句效果相同) $pass = ConvertTo-SecureString -String (Get-Content C:\securestring.txt) #$pass = cat C:\securestring.txt | convertto-securestring #使用 username 及 密碼 建立 credential $Cred = new-object -typename System.Management.Automation.PSCredential -argumentlist "AD\username",$pass
取得密碼明碼
$cred.GetNetworkCredential().Password
Windows 服務相關
取得服務狀態
Get-Service -Name "serviceName" #Get-Service -Name "aspnet_state"
停用服務
Stop-Service -Name "aspnet_state"
啟用服務
Start-Service -Name "aspnet_state"
IIS 相關
AppPool
1-1. 取得特定 AppPool 狀態
Get-WebAppPoolState -Name "appPoolName"
1-2. 停用 AppPool
Stop-WebAppPool -Name "appPoolName"
1-3. 啟用 AppPool
Start-WebAppPool -Name "appPoolName"
Website
2-1. 取得特定網站狀態
Get-WebsiteState -Name "websiteName"
2-2. 停用特定網站
Stop-Website -Name "websiteName"
2-3. 啟用特定網站
Start-Website -Name "websiteName"
動態組成指令
$ExecutionContext.InvokeCommand.NewScriptBlock(" /XD $parameter")
遠端執行
Invoke-Command
語法
Invoke-Command –ComputerName Production1 {$env:COMPUTERNAME}
傳遞其他參數語法
Invoke-Command -ComputerName $Computer -ScriptBlock {param($comp) write-host "This script is running on machine: $Comp" } -ArgumentList $Computer
New-PSSession
New-PSSession –ComputerName Production1 Enter-PSSession {sessionID}
無線網路服務
確認無線網路服務的狀態
Get-WindowsFeature *Wireless*
安裝無線網路服務
Install-WindowsFeature -Name Wireless-Networking
啟動服務
net start WlanSvc
參考資料
- passing array of strings into function
- Arrays
- Windows PowerShell: When to Choose Workflow Versus Script Functions
- Creating a Workflow by Using a Windows PowerShell Script
- Invoke-Command
- POWERSHELL 常見問題 (繁體中文)
- 如何在遠程伺服器上運行PowerShell命令?
- PowerShell - Testing if a String is NULL or EMPTY
- 執行遠端命令
- Using the Get-Service Cmdlet
- How to pass a param to script block when using invoke-command
- 基本操作手冊參考
- Windows PowerShell 5.0
文章作者 Yowko Tsai
上次更新 2021-10-28
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。