我有这个功能:
function start-sqlsnap
{
add-pssnapin SqlServerCmdletSnapin100
}
无论用于加载函数的方法如何,get-pssnapin都会显示加载的snapin.然而:
>如果粘贴在shell中,则会识别函数(如invoke-sqlcmd)
>如果来自文件的点,则识别功能
>如果放在psm1文件中(在模块文件夹内,在其自己的文件夹中,与psm1文件同名)并加载了import-module,则无法识别特定于管理单元的功能 – 但运行get-pssnapin将显示模块加载.
错误:
The term 'invoke-sqlcmd' is not recognized as the name of a cmdlet, function, script file, or operable program. Check t
he spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:14
+ invoke-sqlcmd <<<<
+ CategoryInfo : ObjectNotFound: (invoke-sqlcmd:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
我用不同的snapin尝试了同样的事情:Microsoft.EnterpriseManagement.OperationsManager.Client并且具有完全相同的结果.
我在2008 R2上运行PowerShell 2.
这是一个已知的错误或功能吗?能以某种方式解决这个问题吗?
最佳答案 如果您只添加单行,而不是将该函数添加到模块文件中:
add-pssnapin SqlServerCmdletSnapin100
我试过了,它似乎工作.