问题标签 [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 投票
1 回答
180 浏览

.net - Strange "A positional parameter cannot be found" with Rename-Item

Using Powershell 7, this works perfectly:

This fails:

With the following error:

Based on the docs here -Path is the first position of Rename-Item. Also, the following command works: Rename-Item 'foo-one' 'foo-one-one'. Why does the above failure happen?

0 投票
1 回答
465 浏览

.net - PowerShell 获取 Linux 和 OSX 中进程的命令行参数

在 PowerShell 中,使用Get-WmiObject win32_process它可以获得 Windows 中任何活动进程的命令行参数(像这样)。你如何在 Linux 和/或 OSX 中做同样的事情?

ps命令可以肯定地做到这一点,但我正在寻找一种 PowerShell 原生解决方案,以便能够保持强类型。

0 投票
2 回答
24 浏览

powershell - 为什么添加引号会更改 Powershell 中表达式的值?

我刚刚开始学习 Powershell,但有一件事我无法理解。见下文:

对于带有引号插值的第二行,有人可以解释为什么它显示不同的格式吗?

谢谢,

0 投票
1 回答
795 浏览

powershell - linux PowerShell 中“nohup”的等价物是什么?

我很清楚重复问题的存在。但是该问题已被标记为已回答,我认为它根本无法回答原始问题。

$ nohup command即使 nohup 的父进程(shell)死亡,它也会继续执行命令。更多信息在这里:nohup 和 & 之间有什么区别

在 Win32 api 的情况下,我看到行当系统终止进程时,它不会终止该进程创建的任何子进程。终止进程不会为 WH_CBT 挂钩过程生成通知。. 这是我要问的理想行为。这适用于 win32 powershell 自动。但是对于 linux powershell Start-Job,它只是 powershell 上下文中的后台作业,因为它在 powershell 被杀死时被杀死。

例子:

0 投票
0 回答
41 浏览

string - 在最新的 Powershell 7.x 中将两个字符插入 GB UTF8 字符串的最快方法

PowerShell 7.1 我有一个 1GB 文本 UTF8 文本文件,我将其读入单个字符串。我一直在寻找一种有效的方法来查找值大于 127 的所有字符,然后在其前面插入 2 个字符作为标记。例如,字符串中嵌入了 Unicode 十进制 12288。我需要 char 代码 128 然后另一个 char 保存序列中的字符数(或十六进制,如果你认为十六进制更好)。

如果尝试使用 FOR 循环 ($i=0; $i -lt $text.length; $i++) 然后检查 [int]$text[$i] 以找到下一个大于 127 的字符。然后我使用 $left+[char]128+$nonAsciirunlen+$right 插入我的标记

如果 $text 是 [char]12288+' A '+[char]12288+[char]12288 那么它将更改为 [int] 值 128,1, 12288, 32, 65, 32, 128, 2, 12288, 12288

问题是它在一夜之间运行,并且只处理了大约前 350,000 个。我需要它在大约 10 分钟内处理,但一个小时是可以接受的。

我的目标是用 128 的标记和序列长度来标记字符序列。速度问题似乎是每次我附加字符串的左侧,两个标记代码,然后是字符串的右侧,一切都会变慢。我猜可能是每次我将字符串连接在一起时,PowerShell 都不会释放内存,但这只是一个疯狂的猜测。我没有看内存使用情况。我有 24GB 的内存。

我尝试使用 -encoding UTF8 和 Format-Hex 将字符串转换为十六进制,但即使是 10MB 的部分也会导致来自 Format-Hex 的内存数组异常。这是在字节级别上工作的,但概念相同,只是要跳过的多个字节序列的数量将比跳过实际的字符数更大。

任何想法将不胜感激。

这是我能够处理它的最快速度。这将允许另一个应用程序处理修改后的 UTF8 文本文件,而不会在多字节字符上崩溃。

0 投票
2 回答
154 浏览

powershell - 在非交互环境中使用 AZ 模块?

我希望能够使用该Az模块从 Azure 密钥库中检索机密,以便与已部署到服务器并由 Windows 任务计划程序每天运行的 PowerShell 脚本一起使用。

最初,我需要遵循 oauth(猜测)过程:

重定向到https://login.microsoftonline.com/...,要求​​您选择一个帐户:

在此处输入图像描述

最终,它表示成功:

完成此操作后,检索密钥的脚本将按预期工作:

我担心令牌会过期,导致我的脚本失败。

SharePoint 模块 ( Pnp.PowerShell) 可以使用存储在 Windows 凭据管理器中的凭据。模块也可以Az这样做吗?

如果没有,是否有另一种方法来处理此身份验证过程而无需交互?

0 投票
1 回答
52 浏览

powershell - Powershell 中 Get-ChildItem cmdlet 的不明确行为

我正在尝试获取本地文件夹中所有 txt 文件的列表。

上面的代码没有返回任何内容,但是当我在路径前添加通配符*时,该命令按预期工作并返回 txt 文件列表。

如果没有-Include "*.txt"参数,我会得到这两种情况下所有文件的列表(System.IO.FileInfo对象)

我想知道为什么添加-Include "*.txt"会导致这种模棱两可的行为?我是 PowerShell 的新手,我正在使用 Powershell 7。提前致谢。

0 投票
2 回答
212 浏览

powershell - PowerShell 7.1,如何从函数名称列表中获取别名

我对 Powershell 还很陌生,所以我可能会遗漏一些东西,所以请听:

注意:我在所有函数前加上我的姓名首字母 Function mts_do_something()

我正在尝试浏览函数列表 ( Get-Command mts_*) 并获取它们的关联别名。

但是,某些函数没有别名 ( so Get-Alias -Definition mts_do_something ),此命令会返回错误。因此,我浏览了别名列表并尝试将它们与“GCM”中的项目相匹配。

示例代码:

样本输出:

问题:虽然这段代码产生了所需的输出,但有没有一种优雅的方法可以做到这一点?

0 投票
1 回答
824 浏览

.net - Powershell 中的内部 CLR 错误 (0x80131506) 和崩溃

我将首先说错误本身的原因实际上可能与 PowerShell 无关,它可能在 .NET 中更深层次,但这就是我遇到它的地方。

PowerShell 版本:7.1.0

例如,我定义了以下类型以解析注册表中使用的资源请求(签名与 PInvoke.net 上的完全一样):

现在对于一个测试用例,请考虑以下内容:

产生了输出SNMP Trap,一切看起来都很好。其他一些值也可以正常工作。但是,如果我用例如替换数字-50323-50326那么我仍然会得到正确的值Block any other traffic to and from SNMPTRAP service作为输出,但是在我采取的几乎任何操作(即执行命令,甚至只是按 Tab)时,Fatal error. Internal CLR error. (0x80131506)都会引发一系列无休止的异常,直到我收到一条Stack overflow.消息,PowerShell 崩溃到桌面。(见https://imgur.com/a/MYZwhYa。)

错误取决于正在处理的字符串,而不是到目前为止的方法调用次数:如果最后一个命令首先被调用,在新会话中,同样的错误会立即发生。

但是,除了输出字符串的某些属性(其长度、某些字符的存在等)之外,我一直无法确定甚至无法对导致这种行为的确切原因做出合理的猜测。使用某些参数(更改第三个参数,使用out intand[ref]第四个等)似乎不会影响结果。

我主要被错误的奇怪时间弄糊涂了。似乎某些内部过程可能会导致内存中的其他数据损坏,从而导致稍后出现错误,但这只是我的猜测。我也可能只是遗漏了一些非常明显的东西。

这种行为的原因可能是什么?如果它是 .NET 中的一个真正的错误,我该如何解决它,或者甚至只是确定它发生的确切标准?

0 投票
0 回答
22 浏览

xml - 为什么 Powershell 会输出不需要的调试字符串?

作为一个 PowerShell 新手,我终于能够编写一个 PowerShell 脚本来修补我的 Delphi 项目文件。只有一件奇怪的事情:Powershell 输出一个字符串,用作方法调用的参数:

当我使用InnerText属性而不是set_InnerText()访问器时,会发生相同的不需要的输出。

我将我的 PowerShell 升级到了 7.1 版。

我想知道它是否可能是...的调试输出System.Xml.Element.set_InnerText()?或者这是 PowerShell 的已知副作用?还是我错过了什么?

解决方案

正如评论中所解释的,解决方案是通过将此方法调用分配给来抑制隐式输出$null