為什麼 ps1 腳本預設與記事本關聯?

為什麼 ps1 腳本預設與記事本關聯?

在 Windows 中,每當我單擊.bat,.cmd.vbs腳本(批次和 VBScript)檔案時,它們都會由各自的引擎(命令提示字元和 Windows 腳本主機)執行。

那麼,為什麼 powershell 擴展.ps1預設與記事本關聯,而不是與 Powershell 關聯呢?

答案1

顯然,微軟試圖將 PowerShell 設計為預設安全的。儘管微軟似乎沒有在任何地方明確說明這一點,但這項限制可能是為了防止用戶被欺騙執行和傳播惡意腳本。

有一個很好的描述為什麼這可能是危險的這裡:

PowerShell 實際上是一種命令 shell 和腳本語言,旨在取代 Windows 系統上的 CMD 和批次腳本。因此,PowerShell 腳本幾乎可以配置為執行您可以從命令列手動執行的任何操作。這相當於對您的系統進行幾乎任何更改,直至您的用戶帳戶受到限制。因此,如果您只需雙擊 PowerShell 腳本並以完全管理員權限運行它,那麼像這樣簡單的一行字可能真的會毀了您的一天:Get-ChildItem "$env:SystemDrive\" -Recurse -ErrorAction SilentlyContinue | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue 不要運行上面的命令!

更糟的是,您的朋友可能會被誘騙運行下載並安裝鍵盤記錄器或遠端存取服務的腳本,而不是獲取只會破壞檔案系統的腳本。

但實際上,.bat只需將程式碼作為命令列參數傳遞給 powershell,就可以透過檔案執行 powershell 程式碼。所以PowerShell現在依賴AMSI(反惡意軟體掃描介面)阻止惡意腳本。由於某種無法解釋的原因,原來的限制被保留了下來。

相關內容