我正在尝试运行从命令提示符调用PowerShell脚本的.cmd文件,我收到以下错误:
无法加载Management_Install.ps1,因为在此系统上禁用了脚本的执行.
我跑了cmd.exe,当我Management_Install.ps1从PowerShell 运行时,我Get-ExecutionPolicy回来了.
// Powershell的输出
PS C:\ Users\Administrator> get-executionpolicy
无限制
//从DOS输出
C:\ Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scr
ipts> powershell.\ Management_Install.ps1 1
警告:运行x86 PowerShell ...
无法加载文件C:\ Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\Management_Install.ps1,因为在此系统上禁用了脚本的执行.有关详细信息,请参阅"get-help about_signing".
在线:1个字符:25
.\ Management_Install.ps1 <<<< 1
CategoryInfo:NotSpecified:(:) [],PSSecurityException
FullyQualifiedErrorId:RuntimeException
C:\ Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts> pause
按任意键继续 ...
该系统是Windows Server 2008 R2.
我究竟做错了什么?
如果您尝试使用Invoke-Expressioncmdlet,则有9/10次,有更好的方法.动态构建命令的参数?使用参数数组.构建cmdlet的参数?使用splatting与数组或哈希表.你的命令在它的路径中有空格?使用call运算符(&).
这似乎是开放式的,但它Invoke-Expression是一个易于访问的cmdlet,答案几乎总是永远不会使用它.但是cmdlet存在是有原因的,并没有被弃用,并且大多数批评它的使用状态类似于"它几乎从来都不是正确的答案",但从未说明何时可以使用它.在什么情况下可以使用Invoke-Expression?或者说它不那么公开,如何Invoke-Expression设计使用?