2012-01-09 48 views
6
之外完成的修改

如何刷新Powershell_ise在IDE外部修改的內容。Powershell_ise不刷新在

多數時候我會開了倆Powershell_ise和記事本+

如果我確實在Powershell_ise變化,記事本++的時候請求重新加載,但如果我在記事本修改++是沒有辦法在Powershell_ise刷新。

是否有任何方式刷新內容或我俯瞰任何功能提供此?

+0

您正在使用什麼版本的powershellgui?我現在這樣做,並且是版本2.4.0.1659 – JNK 2012-01-09 14:25:32

+0

@JPBlanc Fwiw,我發現PowerGUI是有點兒車。 [相對路徑完成關閉](http://en.community.dell。com/techcenter/powergui/f/4833/t/19603445),並且通過複雜的調試,我經常進入狀態,在重啓PowerGUI之前,某些變量中的內容不會改變,這是一種難以檢測的狀態。有時候它也可能會讓一些內存很餓。如果我們能夠通過PowerGUI的精確度(甚至只是編輯檢測)來保持ISE的穩定性,我會更加快樂。這*是ISE 3缺失的「殺手功能」。 – ruffin 2015-01-06 15:29:04

+0

由於PowerShell 3我使用ISE,所以對我來說沒問題。 – JPBlanc 2015-01-06 19:44:22

回答

3

PowerShell ISE不支持自動刷新更改的文件。即使在ISE v3中也不存在。

有關於這一主題連接建議:https://connect.microsoft.com/PowerShell/feedback/details/711915/open-ise-files-should-update-when-edited-externally

然而,這可以使用PowerShell ISE對象模型和PowerShell三項賽來完成。探索$ psise.CurrentFile和$ psise.CurrentPowerShellTab.Files集合。這必須爲您提供足夠的信息來編寫您自己的簡單插件。

+1

已投票... +1。我從來不喜歡ISE。這只是缺乏太多的方式。他們應該讓一些視覺工作室團隊開展工作。在那之前PowerGUI FTW :-) – 2012-01-10 11:44:34

+0

你在v3中使用過ISE嗎?你可以做很多! – ravikanth 2012-01-10 12:30:58

+1

簡而言之,只是給了它另一種看法,你是對的,它變得更好。 Intellisense提供商woot:'hklm:\'...然後放下...很好。 – 2012-01-10 13:10:25

3

這篇文章是舊的,但我想我會發布這個谷歌帶我在這裏有同樣的問題。

我最終只是寫了這個小功能,沒有做完全OP想要的東西,但也許其他Google員工會發現它有用:

function Build { 
    #Reload file 
    $CurrentFile = $psise.CurrentFile 
    $FilePath = $CurrentFile.FullPath 
    $PsISE.CurrentPowerShellTab.Files.remove($CurrentFile) 
    $PsISE.CurrentPowerShellTab.Files.add($FilePath) 

    iex $PsISE.CurrentPowerShellTab.Files.Editor.Text 
} 

$psISE.CurrentPowerShellTab.AddOnsMenu.SubMenus.Clear() 
$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add("Reload file and run",{Build},'f4') 

它並不完美,但它足以讓我好現在。所有的工作就是創建一個關鍵綁定,關閉,重新打開,然後執行當前文件。它有點刺耳,因爲當你運行它時,當文件關閉並重新打開時,你將失去當前的光標位置。我相信你可以存儲光標的列和行位置,並在重新加載時恢復它,但我暫時懶得打擾。

編輯:我不小心張貼了一箇舊的非工作版本的我的代碼。更新與工作版本。

2

這裏是red888的劇本不同的旋轉:

function Reload { 

    $CurrentFile = $psise.CurrentFile 
    $FilePath = $CurrentFile.FullPath 

    $lineNum = $psise.CurrentFile.Editor.CaretLine 
    $colNum = $psise.CurrentFile.Editor.CaretColumn 

    $PsISE.CurrentPowerShellTab.Files.remove($CurrentFile) > $null 

    $newFile = $PsISE.CurrentPowerShellTab.Files.add($FilePath) 

    $newfile.Editor.SetCaretPosition($lineNum,$colNum) 
} 

$psISE.CurrentPowerShellTab.AddOnsMenu.SubMenus.Clear() 
$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add("Reload File",{Reload},'f4') > $null 

它恢復重裝後插入符的位置。我刪除了行

iex $PsISE.CurrentPowerShellTab.Files.Editor.Text 

因爲我並不需要它,它也不會一樣運行腳本(因此導致像$script:MyInvocation.MyCommand.Path報表奇怪的行爲)。順便說一句,如果你將這些代碼放入你的ISE配置文件中,它會在第一次加載ISE時自動運行。 ISE配置文件只是一個powershell腳本,其位置由$profile變量給出。

下面是一些創建配置文件的命令,如果它不存在,然後將其打開。從ISE內部運行它:

if (!(Test-Path (Split-Path $profile))) { mkdir (Split-Path $profile) } ; 
if (!(Test-Path $profile)) { New-Item $profile -ItemType file } ; 
notepad $profile 
+0

不錯,但是我可以在哪裏放置它,以便在我啓動PS-ISE時自動執行?此外,執行保持插入位置,但仍然丟失文件中的「選擇」和「確切位置(a.k.a.滾動)」。更糟糕的是,新選項卡不能在標籤欄中的相同索引處重新打開。 這些可以被修復嗎? – Balmipour 2015-10-22 11:39:35

+1

@Balmipour在ISE命令提示符下鍵入'$ profile',然後將代碼放入該文件中。關於其他的東西 - 我不太確定,我也注意到這個解決方案並不理想。 – Oliver 2015-10-23 08:15:11