【问题标题】:PowerShell DSC load assemblyPowerShell DSC 加载程序集
【发布时间】:2018-03-24 13:33:28
【问题描述】:

我编写了一个基于类的 DSC 资源。在这个资源中,我需要一个程序集(Microsoft.SqlServer.Smo.dll)。我试图用清单文件加载程序集:就像这样:RequiredAssemblies = @("Microsoft.SqlServer.Smo.dll")

现在我遇到的问题是,当我想编写我的 DSC 配置定义时,由于错误消息而无法加载我的 dsc 资源:无法找到类型 [Microsoft.SqlServer.Smo.Login]

错误信息的图片:

如何将程序集加载到我的 dsc 会话中?

【问题讨论】:

  • 我不确定你在追求什么,但你能看看这里吗:github.com/PowerShell/xSQLServer/blob/dev/xSQLServerHelper.psm1
  • 你能发布你目前所拥有的吗?
  • @ArcSet 你想看什么?我已经从配置文件中添加了错误消息
  • 你试过[Reflection.Assembly]::LoadFile("Microsoft.SqlServer.Smo.dll"); Add-Type -AssemblyName Microsoft.SqlServer.Smo
  • @ArcSet 我应该在哪里加载程序集?在 dsc 资源 psm1 文件中还是在创建 mof 文件的配置脚本中?

标签: .net powershell .net-assembly dsc


【解决方案1】:

确保程序集与您的模块位于同一文件夹中,然后像这样调用它(无 dll):RequiredAssemblies = @("Microsoft.SqlServer.Smo")

如果这不起作用,您可以使用反射并在导入模块时将其加载到您的 AppDomain 中。

$assembly = Join-Path $PSScriptRoot -ChildPath 'Microsoft.SqlServer.Smo.dll'
$result = [System.Reflection.Assembly]::LoadFile($assembly)
if($result -eq $null)
{
    throw New-Object System.Exception("Failed to Microsoft.SqlServer.Smo assembly")            
}

【讨论】:

  • “RequiredAssemblies”方式不起作用。当我手动加载程序集时,它工作正常。但是当我在 ISE 中使用 F5 运行脚本或单击脚本并使用 powershell 运行时,它仍然会抛出相同的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-07
  • 2021-09-21
  • 2015-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多