你们是否遇到过这样的问题:当您从 SQL Server 启动 PowerShell 时,它会引发如下异常?
无法解析别名“cd”,因为它引用了术语“Microsoft.PowerShell.Manag ement\Set-Location”,而该术语未被识别为 cmdlet、函数、可操作程序或脚本文件。请验证该术语并重试。第 1 行,字符:140 + &{[System.Console]::Title = 'SQL Server Powershell';Convert-UrnToPath 'Server [@Name=''AIMLESS'']/Database[@Name=''AdventureWorks2008'']'|cd <<<< }
pwd
我无法使用一些常见的别名(如、等)进行导航,cd
即使get-alias
clears 显示cd
是set-location
和pwd
是get-location
。
[更新]无法设置别名
答案1
我确信几个月前我遇到过这个问题,但快速搜索后再也找不到它了。我相信用户的 GAC 不知何故被损坏/混淆了。
您可以启动常规 PowerShell 会话吗?
您如何更新.NET 版本?
答案2
您是否在使用 PowerShell 社区扩展?不幸的是,他们使用默认的 profile.ps1 文件而不是 Microsoft.PowerShell_profile.ps1。如果是这种情况,您需要做的就是将 Profile.ps1 重命名为 Microsoft.PowerShell_profile.ps1。SQLPS 将不会加载 Microsoft.PowerShell_profile.ps1 配置文件,只会加载主机无关的配置文件 profile.ps1。这里有一个工作项目
http://www.codeplex.com/Pscx/WorkItem/View.aspx?WorkItemId=18417
答案3
在我看来,这绝对是一个配置文件问题。我发现了一篇文章 (a),其中讨论了一次安装 Powershell 版本 1 beta 导致的类似问题。
我会查看型材链看看哪一个正在重新映射这些别名。然后,您可以重命名配置文件以测试它是否是问题所在。我不太清楚您是如何启动 Powershell 的,但如果 SQL Server 正在启动 Powershell,您将需要查看其用户帐户的配置文件。
这应该可以...
notepad '$env:windir\system32\WindowsPowerShell\v1.0\profile.ps1'
notepad '$env:windir\system32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1'
notepad '$env:UserProfile\My Documents\WindowsPowerShell\profile.ps1'
notepad '$env:UserProfile\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1'
(一)Profile.msh可能出现的错误:
如果您加载 profile.msh 文件,并且之前安装了早期版本的 Monad,那么在启动时您可能会看到一系列错误,例如:
set-alias:无法从别名“cat”中删除 AllScope 选项。在 C:\Documents and Settings\All Users\Documents\msh\profile.msh:9 char:10 + set-alias <<<< cat get-content
要解决此问题,请删除名为的文件(本例中为“C:\Documents and Settings\All Users\Documents\msh\profile.msh”),或从中删除所有“set-alias”行。Monad 早期版本中 profile.msh 中定义的别名现在由 Monad 在运行配置文件之前内部定义;因此,profile.msh 中的定义将在尝试重新定义别名时生成错误。