2012-11-03 151 views

回答

8

您可以嘗試設置過程本身的策略。

powershell.exe -ExecutionPolicy旁路

+0

在我看到的3種技術中,這是最簡單的。在家工作,在辦公室工作。 – MatthewMartin

2

怎麼樣

$script = Get-Content .\test.ps1 
Invoke-Expression $script 
8

如果您的域管理員沒有禁止它,你可以這樣做:

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser 

這更改在當前用戶下運行的PowerShell會話的默認執行策略,而不是爲機器上的所有用戶進行設置。

如果你不是想改變執行策略只是當前PowerShell會話,你可以使用這個命令:

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process 

但是,如果您的域管理員使用「Turn on Script Execution」組策略,你會根本不能改變你的執行策略。組策略設置使Set-ExecutionPolicy cmdlet無效。

+0

我不知道管理員在辦公室設置了什麼組策略。我想知道策略是否停止了Invoke-Expression技術和-EncodedCommand技術,它們都允許在不修改執行策略的情況下執行腳本文件的內容。 – MatthewMartin

+0

我想不會,但我還沒有測試過。如果啓用了PowerShell,只需在命令行中輸入腳本,即可「運行」腳本。執行策略的目標並不是真正阻止確定的用戶,而是防止意識不到的用戶意外運行不受信任的腳本。 –

0

如果你想有一個簡單的方法從windows shell運行腳本myscript.ps1那麼所有你需要的是一個蝙蝠Runmyscript.bat具有以下內容:

type myscript.ps1 | powershell - 

如此簡單,它使我不知道爲什麼你不能只是跑在首位的PS1,但是我們走。

,提示用戶對userinput鍵入腳本名稱的通用版本是:

set /p filename="Type name of script here: " 
type %filename% | powershell - 

我想,如果你願意,你也可以寫,使用打開任何文件在PowerShell中通用的VBScript腳本一個對話框使用這個http://todayguesswhat.blogspot.co.uk/2012/08/windows-7-replacement-for.html

相關問題