2015-03-02 40 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

相关问题