问题标签 [powershell-v5.1]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2939 浏览

windows - X509Certificate2 构造函数使用 Powershell 失败并显示 Byte []

我希望我错过了一些明显的东西,因为我尝试了 3 种不同的方法来生成 PFX/PKCS12 字节数组,以便启动 X509Certificate2 类。

问题:代码抛出异常:

Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException:'指定的网络密码不正确'

目标:生成一个包含私钥的 X509Certificate2,该私钥通过以下代码以及组织在开发中的自签名证书的最佳实践:

代码限制:由于政治/组织政策,上面接受 byte[] 的代码不能由我直接修改,因为它由另一个团队(所有者)控制。如果在所有可能的选项都用尽之后,我将提交一份正式的请求文档,以正当理由讨论代码更改。

平台:Windows 10 企业版 (1803)

编译目标:netstandard2 & .Net 4.7.1

自动化工具方法 1:使用 OpenSSL

自动化工具方法 2:使用 Powershell cmdlet

最终的结果还是抛出了异常。

想法 #2 base64 的输出:

我看到的作品是这些通用步骤:

OpenSSL PFX

上面的命令确实产生了一个 pfx,它将传递构造函数

如果我引用 PFX 文件,它确实通过了构造函数并且可以工作!?如果我再次传递原始文件字节,它会起作用吗?!我为自动化编写的过程在哪里失败,而过于通用/简单的过程在哪里起作用?

Pfx 字节

- 更新 -

使用 OpenSSL 方式在 genrsa 上使用非加密和 pkcs12 命令来获得 -passin pass: 和 -passout pass: 所以它们将被视为空白。这似乎可行,但是我的同事和我自己很好奇,如果 pfx 上没有加密的私钥和导出密码是最佳做法。如果不是,我们如何使其达到标准?

0 投票
1 回答
123 浏览

performance - 迭代一个 windows ascii 文本文件,找到 {LINE2 1-9999} 的所有实例替换为 {LINE2 "line number the code is on"}。覆盖。快点?

此代码有效。我只是想看看有人能让它工作多快。

备份您的 Windows 10 批处理文件,以防出现问题。查找字符串 {LINE2 1-9999} 的所有实例并替换为 {LINE2 "line number the code is on"}。覆盖,编码为ASCII。

如果 _61.bat 是:

结果:

代码:

我预计这将花费不到 984 毫秒。它需要 984 毫秒。你能想出什么来加速它吗?

0 投票
2 回答
772 浏览

function - Powershell Cmdlet.ShouldProcess 方法默认答案

我有一个 powershell 脚本,我在其中实现了具有高 ConfirmImpact 的 should process 方法,以确保出现提示。

提示按预期工作,但未输入任何内容时的默认响应为“Y”

有没有办法将默认响应更改为“N”?如果用户想要应用脚本,我希望用户必须明确输入 Y。我已经编写了一个相当繁重的脚本,我想要的最后一件事是让脚本用户直接按 Enter 键而不验证他们将其应用于什么。

我已经阅读了有关它的文档,并且在任何地方都没有提到这一点。

0 投票
1 回答
593 浏览

powershell - 查找 PowerShell 错误最初是终止还是非终止

假设我用 ErrorAction Stop 运行了一个命令,它产生了一个错误。我想知道错误是否最初终止?我有 ErrorVariable 或 $Error 对象。ErrorVariable 是否捕获这两种错误?我正在寻找 .NET/PowerShell 对象中的一个属性,它可以告诉我这个错误正在终止。是否也会为非终止错误生成异常?

另外,当我在控制台上编写命令(不是 ISE 并且不运行脚本,只是控制台上的单个命令)时,如何使用 ErrorAction 变量抑制错误?基本上,屏幕上不应该有任何红色输出。

0 投票
1 回答
2955 浏览

powershell - Powershell 脚本无法使用 Import-Clixml 命令运行

我有一个在 Windows Server 2012 R2 的 Powershell 4.0 中运行的脚本。现在我安装了 Windows Server 2016 并拥有 Powershell V5.1.17134.590。

在我的脚本中,我有这个:

这是我的 MyCredentials.xml:

现在我很困惑,因为在我的旧机器(windows server 2012 R2)中,当我运行脚本时,我得到了这个:

在此处输入图像描述

如您所见,该命令已成功运行。

但是,在我的 Windows Server 2016 机器上,当我运行相同的脚本时,我得到了这个:

在此处输入图像描述

我不明白为什么这现在不起作用。

谁能帮我?

0 投票
2 回答
367 浏览

powershell - $是什么类型的对象: (例如`$code:`) 在Powershell 中?

我今天在 Powershell 5.1 中使用选项卡自动完成作为变量名,并注意到其中一个选项是 PSDrive 的名称。驱动器名称是docs,我想扩展的是$document_name. 当我输入$do<tab>时,shell 确实扩展了我输入的内容,$document_name但由于某种原因,我再次输入<tab>了第二次,这时扩展的文本变为$docs:.

我进一步探索并发现我的每个 PSDrives 都存在这种类型的变量,或者至少选项卡扩展表明它确实存在。

更正式地说,对于每个 PSDrive PSD,选项卡扩展认为这$PSD:是一个有效的事情。

我的问题很简单:这些到底是什么?以下是我到目前为止所做的一些观察:

  • 这些名称以 为前缀$,因此它们看起来像 PS 变量。对于本次讨论的其余部分(以及在前面的讨论中),我将假设它们是变量并这样引用它们。
  • 尽管它们看起来是变量,但它们并没有Variable:像大多数变量一样在 PSDrive 中列出。这样,它的行为就像$env“变量”,也没有在Variable:. 我有一种感觉,如果我能找到关于 的文档$env,那么我也会理解这些对象。
  • 在某些方面,它们的行为类似于指向文件系统对象的指针。例如,如果有一个readme.txt包含文本“Hello, world!”的文件名。在名为 的 PSDrive 上code,则以下所有内容都是与 Powershell 的可能交互。

获取文件的内容。

只是为了证明上述结果的类型是String

尝试将其用作对 PSDrive 的引用对于许多操作都不起作用,例如cd

我可以继续,但我很难过。如果我通过$code:(或者$env:,就此而言)到Get-Member,我会收到一个错误消息Variable reference is not valid

那么到底什么是“变量”$env$<PSDrive>:(例如$code:)?它们是表达式吗?内置表达式?某种对象?谢谢你的帮助。

0 投票
1 回答
1655 浏览

powershell - 写入信息未显示在由 Start-Transcript 转录的文件中

我正在使用 PowerShell 5.1,我正在尝试确定为什么Write-Information消息不会显示在由创建的脚本日志中,Start-Transcript除非我设置$InformationPreferenceSilentlyContinue. 我想在控制台中显示消息并将它们写入日志文件。

我看这里: https ://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_preference_variables?view=powershell-5.1#informationpreference

然后我决定创建这个脚本来测试什么时候写的。请参阅下面的首选项部分Testing explicit behavior with transcripts -------------

0 投票
0 回答
287 浏览

windows - `Get-Command` 如何返回不是真正命令的“命令”?

'Get-Command' 返回 powershell 会话中所有可用命令的列表。

当传递一个不是命令的字符串时,以下代码的计算结果为 $false:

它确实:

所以你会认为下面的代码会返回不是命令的命令列表——这是一个空列表:

除非它没有。它在干净的 Windows Server 2016 VM 上返回以下内容:

如果我稍等片刻并再次运行相同的命令,它会返回一个更长的列表:

例如,我检查了 RemoteDesktop 模块中的文件,并且能够找到“缺失”的功能。

这里发生了什么?'Get-Command' 如何返回不是命令的“命令”?

0 投票
0 回答
1218 浏览

ftps - powershell ftps 上传导致流关闭时出现错误“数据连接终止而 ssl 关闭”

我有以下代码,我建立在我在网上找到的东西上(不记得在哪里)

该文件上传正常,但是当以下行被触发时:

它会在服务器(ubuntu 上的 vsftp)上导致以下错误:

这反过来导致我的代码中出现以下行:

失败:

非常感谢所有帮助,因为如果上传失败或成功,脚本能够可靠地发出警报非常重要。

============= 更新 ==============

好吧,我没有发布此更新作为答案(至少现在还没有),因为它更多的是一种解决方法,而不是一个适当的解决方案。

我发现这篇中文帖子:https ://blog.yuwu.me/?p=1159我对此一无所知(这对我来说简直就是中文),但他做了 vsftpd 文档的配额部分:

strict_ssl_read_eof 如果启用,SSL 数据上传需要通过 SSL 终止,而不是套接字上的 EOF。需要此选项以确保攻击者不会使用伪造的 TCP FIN 过早终止上传。不幸的是,默认情况下没有启用它,因为很少有客户端能正确使用它。(v2.0.7 中的新功能)。

我将此设置添加到我的配置中,你瞧——我的脚本成功完成。但是,服务器继续抛出错误“数据连接在 SSL 关闭的情况下终止。错误的客户端!无法断言上传的完整性。” 但至少它不再终止我的控制通道。

显然,真正的解决方案是正确终止数据连接,因此希望有人能够成功解决此问题。

0 投票
2 回答
643 浏览

xml - 如何使用 powershell 在 XML 中打印尖括号

我想在powershell中打印尖括号(<,>),但它分别打印到>和<。有什么办法可以打印这些符号。

我已经使用 \ 来克服括号的转义属性以及单个引号,但结果保持不变。

我希望输出是

但它打印

提前致谢!!