gpt4 book ai didi

powershell - 使用 Powershell 恢复 SSRS/PowerBI 报告服务器加密 key

转载 作者:行者123 更新时间:2023-12-03 00:27:15 25 4
gpt4 key购买 nike

我有以下 Powershell 代码来还原 Power BI 报表服务器实例上的加密 key :

$encKeyPath = "C:\Test\enc.snk"
$encKeyPass = Read-Host 'Enter password for key:' -AsSecureString
Restore-RsEncryptionKey -ComputerName "localhost" -Password $encKeyPass -KeyPath $encKeyPath -ReportServerInstance PBIRS -ReportServerVersion SQLServer2016
当我运行它时,我得到了错误:
Get-WmiObject : Invalid namespace "root\Microsoft\SqlServer\ReportServer\RS_PBIRS\v13\Admin"
At C:\Users\MyUser\Documents\WindowsPowerShell\Modules\ReportingServicesTools\ReportingServicesTools\Functions\Utilities\New-Rs
ConfigurationSettingObject.ps1:100 char:19
+ $wmiObjects = Get-WmiObject @getWmiObjectParameters
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-WmiObject], ManagementException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
我也试过 -ReportServerInstance-ReportServerVersion参数,但得到相同的错误消息。我还尝试了 -ComputerName 的本地计算机名称。参数而不是 localhost但仍然没有运气。
该错误似乎是指实际模块本身而不是我的代码中的错误。谁能建议我哪里出错了?
环境
  • Power BI 报表服务器版本:1.8.7450.37410(2020 年 5 月)
  • 实例名称:PBIRS
  • 报告管理器 URL:http://localhost/reports
  • 服务网址:http://localhost/reportserver
  • ReportServer 数据库位于 SQL Server 2016 实例上(数据库名称为 PowerBIReportServer)

  • 编辑:
    到目前为止,使用这两个答案,我发现了以下内容:
    Restore-RsEncryptionKey -ComputerName "localhost" -Password $encKeyPass -KeyPath $encKeyPath -ReportServerInstance PBIRS -ReportServerVersion SQLServer2016
    throw
    Invalid namespace "root\Microsoft\SqlServer\ReportServer\RS_PBIRS\v13\Admin"
    并更改 -ReportServerVersion:
    Restore-RsEncryptionKey -ComputerName "localhost" -Password $encKeyPass -KeyPath $encKeyPath -ReportServerInstance PBIRS -ReportServerVersion SQLServer2017
    throw
    Invalid namespace "root\Microsoft\SqlServer\ReportServer\RS_PBIRS\v14\Admin"
    (注意版本不同)
    运行
    Get-WmiObject -Namespace "Root/Microsoft/SqlServer/ReportServer/RS_PBIRS" -Class __Namespace | Select-Object -Property Name | Sort Name
    输出:
    Name
    ----
    V15
    这说明为什么这两个不同的 -ReportServerVersion参数抛出错误。
    this page建议
    +--------------------+---------+
    | SQL Server Release | Version |
    +--------------------+---------+
    | SQL Server 2012 | 11 |
    | SQL Server 2014 | 12 |
    | SQL Server 2016 | 13 |
    | SQL Server 2017 | 14 |
    | SQL Server 2019 | 15 |
    +--------------------+---------+
    但改变 -ReportServerVersionSQLServer2019返回:
    Restore-RSEncryptionKey : Cannot process argument transformation on parameter 'ReportServerVersion'. Cannot convert value 
    "SQLServer2019" to type "Microsoft.ReportingServicesTools.SqlServerVersion". Error: "Unable to match the identifier name
    SQLServer2019 to a valid enumerator name. Specify one of the following enumerator names and try again:
    SQLServer2012, SQLServer2014, SQLServer2016, SQLServer2017, SQLServervNext"
    At line:3 char:143
    从这里开始,我想问题是:
    如何让模块运行 v15 或如何获得模块/命名空间的第 13 版?

    最佳答案

    该错误是从模块中抛出的,但它似乎是我们放入模块中的数据的结果。让我们深入研究代码,看看发生了什么。
    我找到了模块的源代码here .这些朝向底部的线(85 到 102)对我来说很突出:

        $getWmiObjectParameters = @{
    ErrorAction = "Stop"
    Namespace = "root\Microsoft\SqlServer\ReportServer\RS_$ReportServerInstance\v$($ReportServerVersion.Value__)\Admin"
    Class = "MSReportServer_ConfigurationSetting"
    }

    # code snipped

    $wmiObjects = Get-WmiObject @getWmiObjectParameters
    回顾您的错误,第一行指出“无效的命名空间”。如果 "root\Microsoft\SqlServer\ReportServer\RS_PBIRS\v13\Admin" 中的任何内容立即消失或您对 $ReportServerInstance 的值或 $($ReportServerVersion.Value__)然后我会改变那些。
    如果这些对您来说没问题,我建议您手动搜索目标计算机上可用的 WMI 命名空间。首先,我们要返回 root 的所有子命名空间。
    PS C:\windows\system32> Get-WmiObject -Namespace "Root" -Class __Namespace | Select-Object -Property Name | Sort Name

    Name
    ----
    Appv
    cimv2
    Hardware
    HyperVCluster
    Microsoft
    WMI
    现在我们有了这些,我们可以继续搜索模块所期望的路径。我们从模块代码中知道,它预计接下来会在命名空间/路径中点击“Microsoft”,因此将其添加到我们正在搜索子命名空间的命名空间中:
    PS C:\windows\system32> Get-WmiObject -Namespace "Root\Microsoft" -Class __Namespace | Select-Object -Property Name | Sort Name

    Name
    ----
    HomeNet
    PolicyPlatform
    protectionManagement
    SecurityClient
    Uev
    Windows
    我认为如果你继续沿着这条逻辑线,你会遇到模块期望子 WMI 命名空间,但目标机器缺少它的地方。
    希望这是有帮助的,祝你好运!
    ****更新:
    要回答新问题“如何让模块运行 v15 或如何获得模块/命名空间的第 13 版?”
    cmdlet 的使用示例显示了 2 位报告服务器版本的使用,所以我让你试试这个:
    Restore-RsEncryptionKey -ComputerName "localhost" -Password $encKeyPass -KeyPath $encKeyPath -ReportServerInstance PBIRS -ReportServerVersion '15'
    如果返回相同的错误,请尝试 Connect-RsReportServer .模块文档说明它将设置/更新参数 ReportServerVersion
            .PARAMETER ReportServerVersion
    Specify the version of the SQL Server Reporting Services Instance.
    Use the "Connect-RsReportServer" function to set/update a default value.

    关于powershell - 使用 Powershell 恢复 SSRS/PowerBI 报告服务器加密 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62516550/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com