「PowerShell」修訂間的差異
跳至導覽
跳至搜尋
(→應用) |
|||
(未顯示同一使用者於中間所作的 6 次修訂) | |||
行 43: | 行 43: | ||
===安裝PowerShell=== | ===安裝PowerShell=== | ||
*[https://docs.microsoft.com/zh-tw/powershell/scripting/install/installing-powershell 在 Windows、Linux 和 macOS 上安裝 PowerShell - PowerShell | Microsoft Docs] | *[https://docs.microsoft.com/zh-tw/powershell/scripting/install/installing-powershell 在 Windows、Linux 和 macOS 上安裝 PowerShell - PowerShell | Microsoft Docs] | ||
+ | ===使用嚴格模式=== | ||
+ | *[https://docs.microsoft.com/zh-tw/powershell/module/microsoft.powershell.core/set-strictmode Set-StrictMode (Microsoft.PowerShell.Core) - PowerShell | Microsoft Docs] | ||
+ | <source lang="powershell"> | ||
+ | # 設定嚴格模式 1.0 | ||
+ | Set-StrictMode -Version 1.0 | ||
+ | |||
+ | # 設定嚴格模式 2.0 | ||
+ | Set-StrictMode -Version 2.0 | ||
+ | |||
+ | # 設定嚴格模式 3.0 | ||
+ | Set-StrictMode -Version 3.0 | ||
+ | |||
+ | # 設定嚴格模式 最後版本 | ||
+ | Set-StrictMode -Version Latest | ||
+ | |||
+ | # 關閉嚴格模式 | ||
+ | Set-StrictMode -Off | ||
+ | </source> | ||
===常用指令=== | ===常用指令=== | ||
*Get-Help | *Get-Help | ||
行 64: | 行 82: | ||
===軟體套件安裝=== | ===軟體套件安裝=== | ||
+ | ====經由Chocolatey==== | ||
*[https://chocolatey.org/install Chocolatey Software | Installing Chocolatey] | *[https://chocolatey.org/install Chocolatey Software | Installing Chocolatey] | ||
*執行[https://chocolatey.org/install.ps1 install.ps1] 或 | *執行[https://chocolatey.org/install.ps1 install.ps1] 或 | ||
行 69: | 行 88: | ||
*安裝軟體 (以notepadplusplus為例) | *安裝軟體 (以notepadplusplus為例) | ||
$ choco install notepadplusplus | $ choco install notepadplusplus | ||
+ | ====從WindowsApps安裝應用軟體==== | ||
+ | *以WindowsCalculator為例 | ||
+ | $ManifestPath = (Get-AppxPackage -Name "*WindowsCalculator*").InstallLocation + "\Appxmanifest.xml" | ||
+ | Add-AppxPackage -Path $ManifestPath -Register -DisableDevelopmentMode | ||
+ | |||
===改善PowerShell的效能=== | ===改善PowerShell的效能=== | ||
*[https://blog.miniasp.com/post/2019/01/11/ProgressPreference-slow-down-powershell-execution 如何修正 PowerShell 執行龜速的元兇 (關閉進度列提示) ] | *[https://blog.miniasp.com/post/2019/01/11/ProgressPreference-slow-down-powershell-execution 如何修正 PowerShell 執行龜速的元兇 (關閉進度列提示) ] | ||
− | |||
===取得網路卡資訊=== | ===取得網路卡資訊=== | ||
Get-WmiObject win32_NetworkAdapter | %{ if ($_.PhysicalAdapter -and $_.Name -notmatch "Virtual") {$_ } } | Get-WmiObject win32_NetworkAdapter | %{ if ($_.PhysicalAdapter -and $_.Name -notmatch "Virtual") {$_ } } | ||
行 158: | 行 181: | ||
*[https://stackoverflow.com/questions/13968004/how-do-i-use-json-net-to-parse-json-in-powershell How do I use Json.NET to parse json in PowerShell? - Stack Overflow] | *[https://stackoverflow.com/questions/13968004/how-do-i-use-json-net-to-parse-json-in-powershell How do I use Json.NET to parse json in PowerShell? - Stack Overflow] | ||
**[https://www.nuget.org/packages/Newtonsoft.Json/ NuGet Gallery | Newtonsoft.Json] | **[https://www.nuget.org/packages/Newtonsoft.Json/ NuGet Gallery | Newtonsoft.Json] | ||
− | === | + | ===批次轉檔=== |
*[https://blog.darkthread.net/blog/ps-batch-conv-xls-to-xlsx/ PowerShell 小工具 - XLS 轉 XLSX 批次轉換-黑暗執行緒] | *[https://blog.darkthread.net/blog/ps-batch-conv-xls-to-xlsx/ PowerShell 小工具 - XLS 轉 XLSX 批次轉換-黑暗執行緒] | ||
+ | *[https://blog.darkthread.net/blog/ps-batch-conv-doc-to-docx/ PowerShell 小工具 - DOC 轉 DOCX 批次轉換-黑暗執行緒] | ||
===文字亂碼=== | ===文字亂碼=== | ||
*[https://blog.darkthread.net/blog/ps-pipeline-exe-encoding/ 【茶包射手日記】PowerShell 串接 EXE 輸出中文變亂碼-黑暗執行緒] | *[https://blog.darkthread.net/blog/ps-pipeline-exe-encoding/ 【茶包射手日記】PowerShell 串接 EXE 輸出中文變亂碼-黑暗執行緒] | ||
===計算檔案的雜湊值=== | ===計算檔案的雜湊值=== | ||
*[https://blog.darkthread.net/blog/compute-file-hash-in-win/ 計算檔案雜湊碼 - 使用 PowerShell 及 Windows 內建工具-黑暗執行緒] | *[https://blog.darkthread.net/blog/compute-file-hash-in-win/ 計算檔案雜湊碼 - 使用 PowerShell 及 Windows 內建工具-黑暗執行緒] | ||
+ | ===圖檔處理=== | ||
+ | *[https://blog.darkthread.net/blog/id-card-watermark-ps-tool/ 為自己寫程式 - 身分證影本加浮水印-黑暗執行緒] | ||
+ | |||
+ | ===用管理者身分執行的 PowerShell 腳本=== | ||
+ | *[https://blog.darkthread.net/blog/ps1-requireadministrator/ PowerShell 密技 - 自動改用管理者權限執行 .ps1-黑暗執行緒] | ||
+ | ===抓網頁=== | ||
+ | <source lang="powershell"> | ||
+ | $html = (Invoke-WebRequest -Uri "http://www.google.com").Content | ||
+ | echo $html | ||
+ | </source> | ||
===其他=== | ===其他=== | ||
*[https://docs.microsoft.com/zh-tw/powershell/scripting/install/windows-powershell-system-requirements Windows PowerShell 系統需求] | *[https://docs.microsoft.com/zh-tw/powershell/scripting/install/windows-powershell-system-requirements Windows PowerShell 系統需求] | ||
行 182: | 行 216: | ||
[[Category:軟體]] | [[Category:軟體]] | ||
[[Category:Microsoft]] | [[Category:Microsoft]] | ||
− | [[ | + | [[分類:.NET]] |
[[分類:跨平台]] | [[分類:跨平台]] |
於 2023年3月24日 (五) 17:26 的最新修訂
PowerShell,參照:『維基百科~PowerShell』
技術文件
- 其他
- 強而有力的 Windows PowerShell :: 2009 iT 邦幫忙鐵人賽
- PowerShell FAQ - 函式多參數寫法陷阱-黑暗執行緒
- PowerShell FAQ - 傳入 Callback 函式參數-黑暗執行緒
- PowerShell 小工具 - 盤點及比較 DLL 版本差異-黑暗執行緒
- 使用 PowerShell 串接 EXE 輸出串流結果-黑暗執行緒
- PowerShell 中文博客 - 收集和分享PowerShell相关教程,技术和最新动态
應用
- 其他
- 如何使用 Windows PowerShell 以便在應用程式終止時收到通知?
- How Can I Use Windows PowerShell to Delete All the Files in a Folder Older Than 90 Days?
- 檢查檔案是否存在?如不存在則發email通知
- Download files from websites programatically via powershell
FAQ
安裝PowerShell
使用嚴格模式
# 設定嚴格模式 1.0 Set-StrictMode -Version 1.0 # 設定嚴格模式 2.0 Set-StrictMode -Version 2.0 # 設定嚴格模式 3.0 Set-StrictMode -Version 3.0 # 設定嚴格模式 最後版本 Set-StrictMode -Version Latest # 關閉嚴格模式 Set-StrictMode -Off
常用指令
- Get-Help
- 取得指令的使用說明
- exit
- 離開PowerShell
- HELP
- 線上說明
- kill
- 停止執行中的程序
- ps
- 顯示執行中的程序狀態
- Get-Module
- 顯示已安裝的模組
- Get-Package
- 顯示已安裝的軟體套件
- Find-Package -Name 套件名
- 尋找套件(需安裝Nuget)
- Get-PackageSource
- 顯示能安裝的軟體套件的來源
軟體套件安裝
經由Chocolatey
$ Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
- 安裝軟體 (以notepadplusplus為例)
$ choco install notepadplusplus
從WindowsApps安裝應用軟體
- 以WindowsCalculator為例
$ManifestPath = (Get-AppxPackage -Name "*WindowsCalculator*").InstallLocation + "\Appxmanifest.xml" Add-AppxPackage -Path $ManifestPath -Register -DisableDevelopmentMode
改善PowerShell的效能
取得網路卡資訊
Get-WmiObject win32_NetworkAdapter | %{ if ($_.PhysicalAdapter -and $_.Name -notmatch "Virtual") {$_ } }
使用7z
- Windows 腳本語言選擇
- Windows powershell還是可以使用7Z
- 重新命名資料夾名稱
- 使用xml檔
使用git
使用xml
取得資料夾內附檔名為zip的檔名
$Dir="D:/Folder" foreach($item in (dir $Dir "*.zip")){ Echo $item.Name }
關閉程式與執行程式
- 關閉程式
#取得授權 Set-ExecutionPolicy RemoteSigned #判斷與停止Client if(Get-Process client -ErrorAction SilentlyContinue) { Stop-Process -Name client } #等待1s Start-Sleep -s 1
- 執行程式
#取得授權 Set-ExecutionPolicy RemoteSigned #執行項目 [System.Diagnostics.Process]::Start("C:\Client\client.exe", "")
刪除超過30天的資料庫備份檔
- 參考: 用PowerShell刪除N天前或指定日期(前後)建立(或修改)的檔案 | 程式前沿
- 檔案:ClearDbBackup.ps1
# 清除超過30天的資料庫備份檔 # # 用法: # 用管理員身分執行 PowerShell (怕資料夾或檔案鎖在管理員權限而無法刪除) # >D: # >CD D:\Buckup # >./ClearDbBackup.ps1 #定義主目錄 #透過Get-ChildItem抓該資料夾內的檔案列表 $TargetFolder = "D:\Backup\DB" #定義天數,要刪除多久以前的檔案 #若是要刪除30天前的檔案,$Days就設定30 $Days = 30 #取今日時間 $Currentlytime = (Get-Date).AddDays(-$Days) $Dirs = Get-Childitem -Path $TargetFolder -Recurse -Include *.bak foreach ($item in $Dirs) { #判斷檔案最後修改時間 #由LastWriteTime抓取檔案最後修改時間 #利用AddDays對$Currentlytime做時間的運算 if($item.LastWriteTime -le $Currentlytime) #-le 小於或等於 { Remove-Item $item.FullName | out-null write-host "Finish Deleting Dir $item" -ForegroundColor "DarkRed" } }
ASP.NET WebForm PostBack
JSON
批次轉檔
文字亂碼
計算檔案的雜湊值
圖檔處理
用管理者身分執行的 PowerShell 腳本
抓網頁
$html = (Invoke-WebRequest -Uri "http://www.google.com").Content echo $html
其他
- 安裝
- KB968930 - Windows Management Framework Core package (Windows PowerShell 2.0 and WinRM 2.0)
- KB968929 - Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0, and BITS 4.0)
- Releases · PowerShell/PowerShell
- 啟動方法
- 【開始】→【執行】→【powershell】