為什麼逐行執行 Powershell 腳本可以運作,但執行腳本檔案卻不能?

為什麼逐行執行 Powershell 腳本可以運作,但執行腳本檔案卻不能?

在Windows 7 Prof 中,在Windows Powershell_ISE(以管理員身分)中執行Powershell(版本3)命令會產生預期結果(將網域使用者新增至本機/電腦管理員群組),但從資料夾中的腳本.ps1 檔案啟動它C:\Users\myDomainUser\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup不會產生預期結果!

$objGroup = [ADSI]("WinNT://myComputerName/Администраторы")'Administrators in Russian
$objUser = [ADSI]("WinNT://myDomainName/myDomainUser")
$objGroup.PSBase.Invoke("Add", $objUser.PSBase.Path)

為什麼?
如何在Windows 7重啟時更好地將網域使用者新增至本機管理員群組?

答案1

出於安全原因(除了腳本執行策略之外)Microsoft 已將 .ps1 檔案設定為使用記事本開啟。 (愚蠢的微軟。)計劃任務可能是一個更好的解決方案,但如果您想從啟動資料夾啟動腳本,我建議在啟動中放置腳本的快捷方式並將腳本儲存在其他位置。我使用的快捷方式看起來像這樣:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -file "C:\Scripts\Powershell\Tool.ps1"

如果您使用此語法,請注意您可能想要傳遞給 powershell 的任何其他選項都必須位於 -file 選項之前。 -file 之後的任何內容都被解釋為腳本的路徑或要傳遞給腳本的選項/參數。

答案2

您可能想嘗試使用任務計劃程式運行它。

啟動任務計劃程序(開始功能表、所有程序、附件、系統工具、任務計劃程序)。在右側面板中,選擇「建立任務」。輸入任務的名稱。如果需要,可以更改使用者。選擇“以最高權限運行”。在「觸發器」標籤中,根據您的需求建立「登入時」或「啟動時」觸發器。在操作標籤中,建立一個指向腳本的新操作。

相關內容