我有一个SSIS包为SQL Server执行刷新过程。此过程需要在与运行程序包的凭据集不同的凭据集下执行某些查询。我已经创建了一组PowerShell脚本来处理必需的任务,RefreshMaster.ps1调用GrantPerms.ps1。
GrantPerms.ps1使用CredentialManager模块cmdlet Get-StoredCredential来检索指定任务所必需的必需凭据集。该模块安装在c:\ Program Files \ WindowsPowerShell \ Modules目录中,该目录包含在环境变量PSModulePath中。我使用以下命令为所有用户导入模块。
Import-Module CredentialManager
当我运行Get-Module -ListAvailable时,我看到模块列为二进制,Ver 2.0。当我从PowerShell运行RefreshMaster.ps1时,一切都按预期工作,是的,我已经过测试,以确保选择并传递正确的凭据。但是,当我从SSIS调用RefreshMaster.ps1时,虽然执行进程任务,但我收到错误:
术语“Get-StoredCredential”未被识别为cmdlet,函数,脚本,文件或可操作程序的名称。
示例代码:
#RefreshMaster.ps1
# Call GetCreds script
$ScriptBlock = [ScriptBlock]::Create("\\MyServer\MyShare\GetCreds.ps1")
Invoke-Command -ScriptBlock $ScriptBlock | Out-Null
#GetCreds.ps1
# retrieve credentials from Windows Credetial Manager
$storedCreds=Get-StoredCredential -Target 'MyCreds' -AsCredentialObject
我似乎无法弄清楚如何从SSIS中正常运行。除了调用Get-StoredCredentials之外,所有其余的代码似乎都运行正常。请帮忙!
答案 0 :(得分:0)
我在C:\ Users \ MyLogin \ Documents \ WindowsPowerShell \ Modules中安装了模块并执行了该程序包。它成功执行,没有错误。虽然这是解决问题的可接受的短期解决方案,但我真的很想理解为什么模块在PSModulePath指定的任何位置都无法发现。