2015-03-02 34 views
2

當我通過生成事件在Visual Studio中運行文件時對於我嘗試的每個內置powershell命令都會得到同樣的錯誤。Powershell命令在Visual Studio中的生成事件中不起作用

在Visual Studio

enter image description here

錯誤生成事件窗口

------構建開始:項目:XAzure,配置:調試任何CPU ------ XAzure-> C:\ visual studio 2013 \ Projects \ test \ bin \ XAzure.dll

Get-Date:術語'Get-Date'不被識別爲cmdlet,函數,腳本文件或可操作程序的名稱。檢查名稱的拼寫,或者如果包含路徑,請驗證路徑是否正確,然後重試。

在C:\視覺工作室2013 \項目\ XAzure \ WaitForFiles.ps1:3字符:15 + $日期時間= $(GET-日期) + ~~~~~~~~ + CategoryInfo:ObjectNotFound:(Get-Date:String)[],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException

==========構建:1成功,0失敗,0最新,0跳過==========

該文件只包含這一行$ dateTime = $(Get-Date)並失敗。

不要緊我什麼命令

  • 啓動睡眠-Seconds 2
  • 寫輸出
  • 獲取最新

但如果我將Get-Date換成例如

$start =[System.DateTime]::Now.ToString("yyyy-MM-dd-HH-mm-ss.fff") 

它工作得很好。但那不是解決方案。

I'm在生成事件與

Powershell -ExecutionPolicy bypass -File "$(ProjectDir)WaitForFiles.ps1" "$(ProjectDir)\" 

射擊這件事,但我也試圖像其他變化的號碼(不容remeber他們全部)

Powershell -ExecutionPolicy Unrestricted -File "$(ProjectDir)WaitForFiles.ps1" "$(ProjectDir)\" 

乳寧本在PowerShell窗口中的文件工作得很好所以我必須有命令,但不是在構建事件。

I'm運行的Visual Studio 2013的更新上一個Win32的Windows 8.1 i7處理器戴爾筆記本電腦4 管理模式

運行$ psversiontable給我

Name       Value 
----       ----- 
PSVersion      4.0 
WSManStackVersion    3.0 
SerializationVersion   1.1.0.1 
CLRVersion      4.0.30319.34014 
BuildVersion     6.3.9600.17090 
PSCompatibleVersions   {1.0, 2.0, 3.0, 4.0} 
PSRemotingProtocolVersion  2.2 

我曾試圖給PowerShell的更多的機會和更高的權限,但沒有奏效。

我不能想到任何更多的東西來添加到這個問題或嘗試。這個週末我搜索了3個小時,並嘗試了所有我能在這個錯誤中找到的成功。

奇怪的是,有很多這種「」x不被識別。「」錯誤在那裏看似完全不同的原因。

更新1

我試圖明確 「安裝」 Microsoft.PowerShell.Utiltiy(在管理PowerShell窗口),與此命令 導入模塊Microsoft.PowerShell.Utility

,但我得到這個錯誤

導入模塊:未加載指定的模塊「Microsoft.PowerShell.Utility」,因爲沒有有效的模塊文件在任何模塊目錄中找到。

如果我運行$ ENV:PSModulePath我得到

C:\ Program Files文件\的AppFabric 1.1的Windows Server \ PowershellModules;

C:\ Program Files文件(x86)的\微軟的SDK \ Azure的\ PowerShell的\ ServiceManagement

,如果我跑%WINDIR%\ SYSTEM32 \ WindowsPowerShell \ V1.0 \模塊 我發現C:\ WINDOWS \ system32 \ WindowsPowerShell \ v1.0 \ Modules

這是否意味着這組模塊沒有以某種方式連接?我在那裏看到Microsoft.PowerShell.Utiltiy文件夾。

回答

3

我發現了什麼問題。失敗的命令全部來自Microsoft.PowerShell.Utility。就像Jisaak指出的那樣(給你1表示感謝)

當我發現ps1文件(Microsoft.PowerShell。Utility.ps1)並查看它,我看到了PowerShellVersion =「3.0」

由於我運行PowerShell版本4.0我需要降級版本Im運行。

首先,我認爲版本-3會做的伎倆,但由於某種原因,這不是一個選項。但通過添加-Version 2切換一切正常。

所以下面的工作

Powershell -Version 2 -ExecutionPolicy bypass -File "$(ProjectDir)WaitForFiles.ps1" "$(ProjectDir)\" 
+0

奇怪,工作很好 – 2015-03-03 08:20:37

3

試試這個:

cmd /c powershell -executionpolicy bypass -file "$(ProjectDir)WaitForFiles.ps1" 

獲取最新的cmdlet的是Microsoft.Powershell.Utility模塊中。也許你可以嘗試加載它明確:

Import-Module Microsoft.PowerShell.Utility 
+0

我已經嘗試了第一次沒有運氣。那麼你是否正在討論在WaitForFiles.ps1文件中顯式導入模塊?我試過但失敗了。但是如果你正在談論的是在powersell中執行Import-Module的Microsoft.PowerShell.Utility,我得到錯誤信息「The specified module」沒有被加載,因爲在任何模塊目錄中都沒有找到有效的模塊文件,但是我可以輸入Get-date並獲得一個日期更新問題 – Sturla 2015-03-02 16:18:54

+0

我試圖將位置添加到Microsoft.PowerShell.Utility到PSModulePath但沒有運氣,但是當我打開Microsoft.PowerShell.Utility.ps1時,我看到「PowerShellVersion =」3.0「 「這是否重要?我正在運行4.0 – Sturla 2015-03-02 20:31:35

相關問題