首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用Powershell恢复SSRS / PowerBI报表服务器加密密钥

使用Powershell恢复SSRS / PowerBI报表服务器加密密钥
EN

Stack Overflow用户
提问于 2020-06-22 06:18:49
回答 2查看 700关注 0票数 1

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$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

当我运行这个程序时,我会得到一个错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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的本地计算机名,但仍然没有成功。

该错误似乎指的是实际模块本身的错误,而不是我的代码。有人能告诉我哪里出了问题吗?

环境

编辑:

利用这两个答案,我发现如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Restore-RsEncryptionKey -ComputerName "localhost" -Password $encKeyPass -KeyPath $encKeyPath -ReportServerInstance PBIRS -ReportServerVersion SQLServer2016

抛出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Invalid namespace "root\Microsoft\SqlServer\ReportServer\RS_PBIRS\v13\Admin"

并更改-ReportServerVersion:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Restore-RsEncryptionKey -ComputerName "localhost" -Password $encKeyPass -KeyPath $encKeyPath -ReportServerInstance PBIRS -ReportServerVersion SQLServer2017

抛出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Invalid namespace "root\Microsoft\SqlServer\ReportServer\RS_PBIRS\v14\Admin"

(注意版本上的差异)

正在运行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Get-WmiObject -Namespace "Root/Microsoft/SqlServer/ReportServer/RS_PBIRS" -Class __Namespace | Select-Object -Property Name | Sort Name

产出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Name
----
V15 

这就解释了为什么两个不同的-ReportServerVersion参数会抛出一个错误。

此页建议

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+--------------------+---------+
| SQL Server Release | Version |
+--------------------+---------+
| SQL Server 2012    |      11 |
| SQL Server 2014    |      12 |
| SQL Server 2016    |      13 |
| SQL Server 2017    |      14 |
| SQL Server 2019    |      15 |
+--------------------+---------+

但是将-ReportServerVersion更改为SQLServer2019返回:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-01 09:45:04

错误正在从模块中抛出,但似乎是我们将数据放入模块的结果。让我们深入研究代码,看看发生了什么。

我找到了模块这里的源代码。这些向底部(85到102)的线向我伸出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    $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名称空间。首先,我们希望返回根的所有子名称空间。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PS C:\windows\system32> Get-WmiObject -Namespace "Root" -Class __Namespace | Select-Object -Property Name | Sort Name

Name
----
Appv
cimv2
Hardware
HyperVCluster
Microsoft
WMI

既然有了这些,我们就可以继续搜索模块所期望的路径。从模块代码中我们知道,它将在下一步的名称空间/路径中点击"Microsoft“,因此将其添加到我们正在搜索的子名称空间中的名称空间中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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位报告服务器版本,因此我希望您尝试如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Restore-RsEncryptionKey -ComputerName "localhost" -Password $encKeyPass -KeyPath $encKeyPath -ReportServerInstance PBIRS -ReportServerVersion '15'

如果返回相同的错误,请尝试Connect-RsReportServer。模块文档说明它将设置/更新参数ReportServerVersion

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        .PARAMETER ReportServerVersion
            Specify the version of the SQL Server Reporting Services Instance.
            Use the "Connect-RsReportServer" function to set/update a default value.
票数 3
EN

Stack Overflow用户

发布于 2020-07-01 09:33:38

要解决-ReportServerVersion模块中的ReportingServicesTools参数出现的问题,导致命名空间错误,可以使用以下三个快速步骤:

  1. 确定服务器支持的SQL server版本(用实际的"root\Microsoft\SqlServer\ReportServer\RS_PBIRS“(如果不同的话)替换PBIRS ):Get -Class -Class __Namespace选择对象-ExpandProperty名称 输出示例: V15
  2. 将当前版本显示为名称映射的enum::GetValues(Microsoft.ReportingServicesTools.SqlServerVersion):ReportingServicesTools% {PSCustomObject@{Name = $_;Version = $_.value__}} 示例输出:名称版本? SQLServer2012 11 SQLServer2014 12 SQLServer2016 13 SQLServer2017 14 SQLServervNext 15。
  3. 将支持的服务器版本映射到ReportingServicesTools模块中的相应名称,并使用该名称将其传递给-ReportServerVersion参数或直接传递整数(在去掉v之后)。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62516550

复制
相关文章
PowerBI丨送给正在学习的你
可能有很多小伙伴,工作中用到PowerBI的机会并不多,或者使用的场景也并不复杂,因此很多小伙伴都不清楚学习PowerBI的意义和前景在哪,这里白茶简单的描述一下。
PowerBI丨白茶
2021/09/04
1.9K0
PowerBI丨送给正在学习的你
精品丨分页报表—自助化分析与格式化数据
PowerBI的前身是Excel,但是有很多Excel的功能PowerBI并没有完全涵盖,这就导致了有些Excel能做到的,PBI反而做不了。
PowerBI丨白茶
2021/09/04
2.2K0
精品丨分页报表—自助化分析与格式化数据
共享密钥加密与公开密钥加密
加密数据的方法可以分为两种:加密和解密都使用相同密钥的“共享密钥加密”和分别使用不同密钥的“公开密钥加密”。
神奇的程序员
2022/04/10
2.9K0
共享密钥加密与公开密钥加密
微软商业智能系列(一)初识微软BI
随着移动互联网、云计算、物联网和大数据技术的广泛应用,社会已经迈入全新的数据时代。掌握数据资产,进行智能化决策,已成为企业胜出的关键。越来越多的企业开始重视数据战略布局,重新定义自己的核心竞争力,从数据中揭示规律,了解过去、知悉现在、洞察未来,数据驱动企业运行与决策的科学性,构建智慧企业,打造核心竞争力。
黄昏前黎明后
2021/07/20
2.8K0
微软商业智能系列(一)初识微软BI
使用密钥登陆服务器
虽然linux比windows系统好用,安全性能比较高,但是一般我们使用linux实例基本都是裸奔,所以使用密钥登陆也是最安全的,若,修改了端口并使用密钥登陆大大提升被暴力破解或入侵的情况。本篇文章介绍如下两个:
用户14527
2020/11/24
5K0
使用密钥登陆服务器
密钥加密法(指针应用)
有一种方式是使用密钥进行加密的方法,就是对明文的每个字符使用密钥上对应的密码进行加密,最终得到密文
叶茂林
2023/07/28
2650
.NET中的密钥加密
本教程将演示如何通过System.Security.Cryptography在.NET Framework 1.1中实现对称加密/密钥加密。
MelodyS
2018/03/12
3.1K0
.NET中的密钥加密
SQL Server Reporting Services(CVE-2020-0618)中的RCE
SQL Server Reporting Services(SSRS)提供了一组本地工具和服务,用于创建,部署和管理移动报告和分页报告.
洛米唯熊
2020/02/25
1.6K0
SQL Server Reporting Services(CVE-2020-0618)中的RCE
「Azure」数据分析师有理由爱Azure之三-对照Sqlserver学Azure
Sqlserver的内容非常广大,笔者也不是这方面的专家,所以整个系列的文章必须是在一个狭隘的小范围内讨论。
Excel催化剂
2021/08/19
1.4K0
「Azure」数据分析师有理由爱Azure之三-对照Sqlserver学Azure
从 Gartner 2019 评估报告看到底谁赢了谁
2019年,PowerBI 又被评为2019年度全球商业智能市场第一。 诶?为什么要加个“又”字呢~ 因为 2018年,PowerBI 被评为2018年度全球商业智能市场第一。
BI佐罗
2019/09/23
2.1K0
从 Gartner 2019 评估报告看到底谁赢了谁
如何使用PSRansom进行勒索软件安全分析
PSRansom是一款带有C2服务器功能的PowerShell勒索软件模拟工具,该工具可以帮助广大研究人员模拟针对任何操作系统平台(只要安装了PowerShell即可)的通用勒索软件数据加密过程。在C2服务器功能的帮助下,我们甚至还可以通过HTTP从目标设备(客户端)中提取文件,并在服务器端接收信息。
FB客服
2022/04/12
5320
如何使用PSRansom进行勒索软件安全分析
VFP生成随机加密密钥
加菲猫的VFP
2023/08/21
2200
VFP生成随机加密密钥
DH密钥交换非对称加密
迪菲-赫尔曼密钥交换(Diffie–Hellman key exchange,简称“D–H”) 是一种安全协议。 它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。 (1)、算法描述 离散对数的概念: 原根:如果a是素数p的一个原根,那么数值: amodp,a^2 modp,…,a^(p-1) modp 是各不相同的整数,且以某种排列方式组成了从1到p-1的所有整数。 离散对数:如果对于一个整数b和素数p
xiangzhihong
2018/02/01
2.1K0
利用PowerBI结合SCOM展示数据报表
PowerBI是微软基于Office 365的云端商业智能服务,目前只有国际版的O365具备这个功能。利用PowerBI的视觉图标展示,结合SCOM数据仓库,稍做一些数据加工,我们便可以非常清晰的将SCOM的监控数据展示出来,帮助管理员和公司领导了解到账户的安全情况、服务器性能、桌面的工作量,通过数据来帮助我们进行决策。
李珣
2019/03/14
8310
TLS加密套件之密钥交换
TLS是固定格式,一般在ng配置的时候是不需要配置TLS_这一部分的,直接从密钥交换开始算。
西门呀在吹雪
2023/08/10
9520
TLS加密套件之密钥交换
Bytomd 助记词恢复密钥体验指南
Gitee地址:https://gitee.com/BytomBlockchain/bytom
比原链Bytom
2018/10/08
1.2K0
Bytomd 助记词恢复密钥体验指南
使用MySQL Keyring 的 SECRET类型密钥执行非对称加密
以下是一个示例,演示应用程序使用公钥进行非对称加密数据。在MySQL 8.0.19中,添加了支持Keyring技术的SECRET密钥类型。使用此技术,用户可以使用以下方法安全地管理自己的密钥:
MySQLSE
2020/09/28
2K0
微软竟然上传用户磁盘加密密钥到微软服务器中
如果你是用微软账号登录Windows 10,那你得知道,你的电脑会自动上传你的加密密钥。 新的Windows电脑会默认开启自带的磁盘加密功能,保障用户数据,防止电脑被偷或遗失。 但要警惕的是,这个磁盘加密功能跟BitLocker是有区别的,BitLocker允许用户选择是否要在Windows服务器上备份加密密钥。 这个安全功能从Windows 8.1开始就默认开启了,但是如果用户遗失了加密密钥怎么办呢? 微软会保留一份恢复密钥的副本,这引起了广泛的争议,在许多专家们看来,这会导致隐私问题。 The In
FB客服
2018/02/07
2.5K0
微软竟然上传用户磁盘加密密钥到微软服务器中
报表设计丨如何让你的PowerBI看板出彩?
在2020年的时候,白茶分享过<报表设计丨颜色搭配>,很多小伙伴和白茶闲聊的时候都提过,除了色彩搭配这种需要审美的设计,有没有更简单美化报表的方法?答案是:有的!
PowerBI丨白茶
2022/07/23
9790
报表设计丨如何让你的PowerBI看板出彩?
将Azure AD用户导入Power BI,这是进一步分析的前提
不过中间还是有一些波折的,比如从一开始的onmicrosoft邮箱无法发送邮件,到邮箱发送邮件过多导致账号被锁定,还有密码无法更改的,发布到web无法实现的,都一一进行了更正,目前可以良好地满足所有新注册用户。
陈学谦
2021/12/21
1.6K0
将Azure AD用户导入Power BI,这是进一步分析的前提

相似问题

使用Powershell备份SSRS加密密钥

10

SSRS / PowerBI报表服务器-通过Powershell更新RDL中的超链接

16

删除加密密钥后无法打开SSRS报表

25

如何使用PowerBI报表服务器的URL访问将SSRS报表导出到PDF?

13

恢复加密代理密钥

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文