问题标签 [powershell-7.0]

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 投票
0 回答
163 浏览

powershell - Powershell 版本之间 System.Net.HttpWebRequest 的变化?

我在将 Powershell 脚本从 PS5 转换为 PS7 时遇到了一些问题。

我的目标是获取有关远程服务器证书的信息。

这个 IP 可以是任何有证书的东西:

在 Powershell 5 中运行时,此脚本成功完成,输出如下:

此脚本$req.GetResponse在 Powershell 7 中运行时出错。

有任何想法吗?

0 投票
1 回答
77 浏览

powershell - 将参数传递给远程脚本块

假设我有 2 个脚本。main-script.ps1 和 base-script.ps1 以及从 main-script 调用的 base-script。

现在随着 base-script.ps1 中参数的增长,argumentlist 中传递的参数变得越来越长且难以管理。有一个更好的方法吗。我无法在这方面进行大量工作。

根据第一条评论,我们需要尝试这样的事情:

但就我而言,脚本块是在外部定义的。

$arr 是参数数组。这似乎不起作用。请建议。

0 投票
1 回答
327 浏览

powershell - windows中vim的后台模式

我最近开始从我的常规编辑器转移到 vim 并且我使用 powershell 作为我的默认 shell。我注意到在正常模式下,按 ctrl z 可以快速返回终端(尽管在非常不同的模式下,常规快捷方式(如 ctrl L 清除屏幕等)不起作用)。在阅读了一些帖子后,我知道这个快捷方式是为了在 linux 中将 vim 置于后台模式fg并将其带回前台。由于这在 powershell 中不起作用,是否有另一种方法来获得相同的功能?

PS:还有其他方法可以从 vim 中获取 powershell 提示符吗?

谢谢!

0 投票
2 回答
1337 浏览

character-encoding - Powershell 7 字节编码图像文件

我正在使用 PowerShell 通过 API 将文件上传到网站。

在 PS5.1 中,这将使图像采用正确的 B64 编码,由另一端的 API 处理:

在 PS7 中,这会因错误而中断:

我尝试以其他编码读取内容,然后使用 [system.Text.Encoding]:GetBytes() 进行转换,但字节数组总是不同的。例如

但是在 PowerShell7 上:

我尝试了其他编码组合,但没有任何改进。谁能建议我哪里出错了?

0 投票
1 回答
459 浏览

.net - 无法在 PowerShell 7 中加载 .NET 程序集

mRemoteNG 是一个多远程协议连接客户端,与 RDCMan 相媲美,但支持其他协议,如 SSH、VNC 等。

我正在制作mRemoteNG 创建批量连接脚本的自定义版本。该脚本是为 PS 5.1 编写的,我正在尝试将它与脚本中的许多其他组件一起更新到 7。该脚本通过 PS 批量创建连接,因此不需要通过 UI 完成(如果您有很多要添加的内容,那就太麻烦了)。

为了创建每个连接对象,通过 mRemoteNG.exe 构建一个强类型的 .NET 对象,该对象随后被序列化并导出为 XML。我正在尝试执行第一步:在当前会话中加载 mRemoteNG.exe 以进一步创建强类型的 .NET 对象。

在 5.1 中,我可以使用 [System.Reflection.Assembly]::LoadFile() 毫无问题地加载 mRemoteNG.exe。7、同样的方法行不通。我知道上述方法最终将被弃用,因此切换到 Add-Type 希望解决问题,但得到了相同的结果。

要准确测试以下内容,您需要在此处下载 mRemoteNG 。我在我的机器上使用 v1.77,建议您也这样做以最准确地重现此问题。但是,我已经针对 1.76 对此进行了测试,并且可以确认发生了同样的问题。

我正在运行的内容:

  • PowerShell 5.1 - 成功
    • [System.Reflection.Assembly]::LoadFile("C:\Program Files (x86)\mRemoteNG\mRemoteNG.exe")
  • PowerShell 7.0.3 - 失败
    • Add-Type -Path ("C:\Program Files (x86)\mRemoteNG\mRemoteNG.dll")
    • 请注意,您仍然可以在 7 中使用 PS 5.1 版本,无论哪种方式都会失败
    • 我复制了一份 mRemoteNG 并将其重命名为 mRemoteNG.dll,因为 Add-Type 不支持 .exe

尝试使用上述任一方法加载时收到的错误:

使用“1”参数调用“LoadFile”的异常:“无法加载文件或程序集'mRemoteNG,版本 = 1.77.0.41252,文化 = 中性,PublicKeyToken = null'。”

PublicKeyToken=null 最初让我相信存在签名问题,但谷歌搜索似乎表明这是一个依赖冲突。但是,在这种情况下,异常中不会像通常那样指示依赖性问题。

值得注意的是,mRemoteNG 需要 .NET 4.6。在 PS 5.1 和 7 中运行 [System.Reflection.Assembly]::GetExecutingAssembly().ImageRuntimeVersion 表明我的系统上的默认值为 4.0.30319。我很难理解在 5.1 和 7 中使用相同 .NET 版本运行的 PS 如何产生两个完全不同的结果。

有没有人知道为什么会发生这种情况以及如何解决?

0 投票
1 回答
312 浏览

powershell - 内存使用powershell 7.03 Foreach-object Parallel

我正在尝试跨合理的数据集进行处理,并尝试在 powershell 7.x 中使用 Foreach-Object -Parallel。

每次我跑步时,我发现我的内存不足似乎每 1000 个对象大约 1 gig,我现在已经提炼成以下代码。(这除了创建然后销毁4000次运行之外什么都不做)

如果您将 $a 的值更改为 1000,则将消耗大约 1 gig 的内存,将 $a 设置为 2000 然后 2 gig 的内存等。油门限制不会仅更改 CPU 线程数消耗的内存量.

当您想要处理脚本块的次数变大时,这会导致问题。在我的示例中,我需要使用脚本块中的代码处理 20,000 台计算机。运行该代码时,脚本消耗了 16+ gig 并导致分页。

任何人都可以确认他们是否看到相同的问题或者是否有已知的解决方法。

0 投票
1 回答
138 浏览

azure - 如何使用 PowerShell 7 在 Azure 中获取任何 Blob 属性

我正在使用以下代码访问和检索 Azure 中的 blob 属性。我想让这个函数通用,这样我就可以用任何“属性”名称调用它,而不是像下面硬编码的那样只检索“IsServerEncrypted”属性:

谢谢!

0 投票
1 回答
156 浏览

powershell - PowerShell:不能在类方法内设置局部变量?

我希望在类方法中,我可以在方法内部设置“局部”变量,但事实并非如此。以下是测试代码:

我收到一条错误消息:

这是令人惊讶的。我怎样才能有局部变量?

作为比较,函数(即在类之外)可以具有与脚本变量同名的局部变量。下面是一个例子:

我得到了我期望的答案:

作为与 Python 的另一个比较:

它按预期工作:

所以 PowerShell 不正常?

PS:我在 PowerShell 5.0 和 7.0 下测试过。

0 投票
1 回答
369 浏览

powershell-5.0 - 如何将参数传递给新进程中的脚本块

我想从 pwsh 核心启动一个新的 powershell 会话,以运行一些旨在在 powershell 5.1 中运行的代码(它检查版本表)。

我可以让脚本块正常执行,但我想将变量值从我的 pwsh 会话传递到新会话。

一个不起作用的例子是:

新窗口打开:

但是,当我将它包装在一个完整的.ps1脚本中时,它似乎工作正常。

0 投票
1 回答
62 浏览

powershell - Blob 属性 - 除了通过 ForEach 循环之外,有没有更好的方法从这个集合中挑选?

我有以下代码,它获取 blob 的属性集合,然后使用 foreach 循环来定位选定的属性值。是否有不涉及循环遍历 PowerShell 7 中的集合的更好方法