「PowerShell」修訂間的差異

出自ProgWiki
跳至導覽 跳至搜尋
 
(未顯示同一使用者於中間所作的 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]
===Excel批次轉檔===
+
===批次轉檔===
 
*[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]]
[[Category:.NetFramework]]
+
[[分類:.NET]]
 
[[分類:跨平台]]
 
[[分類:跨平台]]

於 2023年3月24日 (五) 17:26 的最新修訂

PowerShell,參照:『維基百科~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

使用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天的資料庫備份檔

# 清除超過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

其他

安裝
啟動方法
  • 【開始】→【執行】→【powershell】