2015-09-08 48 views
0

我試圖製作一個腳本,人們可以雙擊來運行偶爾更改的一組命令。在Linux中,我運行了一個.sh,其中包含另一個sh(我可以在需要時更改)並運行它。我正在爲Windows尋找類似的解決方案。從.bat啓動不起作用,就像直接運行.ps1一樣

我看着PowerShell中卻發現,它需要從.bat運行,允許雙擊,所以現在我有以下幾點:

foo.bat文件:

@ECHO OFF 
SET ThisScriptsDirectory=%~dp0 
SET PowerShellScriptPath=%ThisScriptsDirectory%bar.ps1 
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%PowerShellScriptPath%""' -Verb RunAs}"; 

調用bar.ps1

Invoke-WebRequest https://dl.dropboxusercontent.com/u/xxx/bar2.ps1 -OutFile bar2.ps1 

從PowerShell的運行bar.ps1工作正常,下載bar2.ps1,但在運行BA tch文件沒有,或者至少不是這兩個文件所在的目錄(無法在任何地方找到它,儘管我猜它可能仍然是工作目錄問題?)。

回答

0

您的批處理文件正在使用提升的權限運行PowerShell腳本。這樣做會將工作目錄更改爲C:\Windows\system32(出於安全原因),因此您很可能會在那裏找到下載的文件。要獲得ouptut文件在同一目錄的腳本,你可以改變的PowerShell腳本是這樣的:

$dir = Split-Path $MyInvocation.MyCommand.Path -Parent 
$filename = 'bar2.ps1' 
$url = "https://dl.dropboxusercontent.com/u/xxx/$filename" 

Invoke-WebRequest $url -OutFile "$dir/$filename" 

雖這麼說,你爲什麼要擺在首位運行具有提升的權限下載腳本?不要這樣做。

相關問題