问题标签 [powershell-5.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 回答
76 浏览

arrays - Powershell - 如何检索对象 [] 数据

我正在尝试从 api 请求中获取一些数据,但排名它已损坏。我在一个文件中有这个代码:

每当我运行它时,它都会显示:

我不明白为什么排名从 4690 变为 1,当我打印变量$queryResult$queryResult.leaderboard内容时,它清楚地显示 rank=4690,但是当我访问最里面的元素时,它打印排名:1。

为什么排名从 4690 变为 1?

你可以复制代码自己试试,API是公开的。

谢谢

0 投票
1 回答
110 浏览

windows - 尽管使用了带有 powershell 5.1 的运行空间池,但没有并行化

我们正在开发一个 Powershell 脚本,其中包括通过 REST API 执行多台计算机的作业导入。正常的作业导入也可以完美运行,并获取一个 XML,其中包含作为参数传递的所有必要信息。

现在我们想要并行化这个作业导入,这样这些导入中的几个可以同时发生,以减少大量计算机的导入时间。

为此,我们使用一个运行空间池并将一个工作程序(其中包含作业导入的代码)以及所有必要的参数传递给相应的 Powershell 实例。不幸的是,这似乎不起作用,因为即使在测量了导入时间之后,由于作业导入的并行化,我们也看不到任何加速。测量的时间总是与我们按顺序执行作业导入的时间大致相同——即没有并行化。

这是相关的代码片段:

脚本的其余部分如下所示(简化):

尽管运行空间池和相应的并行化,为什么作业导入显然只是按顺序执行的任何想法?

0 投票
0 回答
141 浏览

java - 使用 powershell 脚本创建编码为 UTF-8 的 .json 文件

我正在创建 input.json 文件并且我能够做到,但问题是:这个 input.json 已经以 UCS-E2 BOM 编码格式创建。我认为,它是默认的编码格式。但我在编码 utf 格式时需要这个,因为我在阅读 java 编程时遇到错误。我尝试了几种解决方案,但没有奏效。

请帮助我,或者您可以分享任何可以帮助的文章

0 投票
1 回答
107 浏览

powershell - Powershell控制台缓冲区中随机出现神秘空白

我被一个非常奇怪的现象所困扰。我倾向于为我在工作中所做的事情编写相当深奥的 Powershell 模块。通常,在运行其中一个之后,模块已经结束,我会转移到其他一些任务,当我碰巧再次打开我的 Powershell 控制台窗口时,会出现几个空白行(或只是空白“空格”)缓冲。它永远不会立即出现,这是最令人困惑的部分。

之后,闪烁的光标出现在这个空格的末尾,并且空格不能“退格”(所以不是不小心输入空格或换行符)。它就在那里,作为缓冲区的一部分。我通常只是清除屏幕cls以防止它打扰我。

我过去常常把它归结为有缺陷的 Windows Powershell 5.1 缓冲。但是,现在我已经开始使用 Powershell 7(和 Windows 终端),我发现问题仍然存在。

这是我的模块完成运行一小时左右后 v7 Windows 终端选项卡的屏幕截图:

在此处输入图像描述

有时似乎我等待的时间越长,出现的空白就越多。这是大约 20 小时后同一控制台选项卡的屏幕截图:

在此处输入图像描述

对不起,我没有更好的方法来解释这一点。我意识到没有任何代码或模式可以分析,按照 SO 标准,这是一个非常糟糕的问题,但我和你一样困惑。我注意到的唯一模式是,这似乎只发生在我运行各种自定义模块之后。然而,这占了我使用 Powershell 的大部分,所以它可能是一个红鲱鱼。

通常我的模块只是做一些处理(与计算机、AD 等对话)并通过 输出一些信息Write-Host,偶尔输出 a [PSCustomObject],我总是将其捕获在一个变量中。即使我不小心向管道输出了一些空白行或其他内容,我也看不出这将如何表现为随着时间的推移而增长的空白缓冲区空间。我想也许我错误地杀死了异步作业或其他东西,这以某种方式导致了这种情况,但即使在纯同步代码中也会发生这种情况。

需要明确的是,在上面的屏幕截图中没有实际运行的代码。该模块是我在这个特定的控制台选项卡/会话中运行的唯一东西,它不运行任何后台进程。所以我不明白为什么缓冲区会自行改变。在这两个屏幕截图中,选项卡/窗口的大小与模块首次完成时的大小相同,因此动态调整大小的不仅仅是缓冲区中的一堆空格。如前所述,当模块拳头完成时,缓冲区中根本没有流氓字符。

关于我的使用的另一件事是,这一切都是在远程 VM 上完成的,通过 RDP 访问,我每天都使用它。我唯一能想到的另一件事可能是控制台窗口被最小化/最大化/调整大小,分辨率改变,或者登录会话被连接/重新连接与它有关。

这听起来很熟悉吗?任何可能导致这种情况的想法或我可以尝试更好地理解这种行为的任何想法都非常感谢。

0 投票
0 回答
99 浏览

powershell - 如何调用多个 Robocopy.exe 命令 AsJobs?

不要打我太多人,我试图理解关于这个问题的其他类似问题,只是无法破译它们。

我正在使用以下代码片段在“远程”计算机上分别复制文件夹Start-Job

该代码按预期工作。

现在,问题是当我尝试使用远程调用Invoke-Command -AsJob命令时。错误读取:

管道未运行,因为管道已在运行。管道不能同时运行。

在来到这里之前,我试图阅读和理解,但无法理解为什么它不起作用。奇怪的是,$Folders阵列中的第一个文件夹(Desktop)确实被复制为作业,显示已完成,但另一个显示立即失败。所以我跑了Receive-Job -Name Documents,是我得到上述错误的地方。

  • 这与管道有什么关系?
  • 有解决办法吗?

失败的代码:

Get-Job输出:

由于它产生的事件,我想坚持将其“作为作业”运行StateChanged,我将其用于不同的目的。

编辑: 我决定将它全部打包成一个Invoke-Command并发送过来,但它仍然一次复制一个。

0 投票
0 回答
22 浏览

powershell - 如何将 Invoke-Command 中的字符串数组传递给远程计算机?

今天我被这件事难住了。我有一个脚本,它通过提供计算机名来删除远程用户配置文件,它会从 C:\users 中的文件夹中列出一个列表,以根据他们的 ADUC 名称进行选择。我遇到的问题是我的排除参数,因为它似乎只接受一个参数。我宁愿不使用Get-ChildItemUNC 路径来避免速度性能下降。

我已经尝试了很多东西,所以我将跳过在这里输入以节省空间。比我聪明的人能帮帮我吗?

无能为力,但觉得我错过了一些东西。我只想能够提供要排除的用户列表(文件夹名称)。

  • Delete-UserProfile -ComputerName LocalHost#作品
  • Delete-UserProfile -ComputerName LocalHost -Exclude UserOne#作品
  • Delete-UserProfile -ComputerName LocalHost -Exclude UserOne, Usertwo#不工作。

这是完整的脚本:

笔记:

除了我发布的当前问题之外,脚本本身确实有效。随时提供反馈!- 放轻松,哈哈,还在学习 -

0 投票
1 回答
156 浏览

windows - 由于权限,在 Powershell 脚本中使用 Set-Date 失败

尝试Set-Date在我的 powershell 脚本中运行时失败,因为它声称需要更多权限。我已将用户组甚至所有人添加到调整系统时间本地安全策略中。当然,我可以将其提升为管理员,但我试图避免这种情况。更奇怪的是,到目前为止,该脚本在某些机器上运行良好。

Powershell版本是5.1,windows版本是10 Enterprise 2016 (v1607)

错误信息:

0 投票
1 回答
58 浏览

powershell - powershell在计算前计算属性插入变量

我已经尝试了一段时间,让我的 $Tenant.Name 变量作为文本插入,而不是作为稍后获取的变量。

目前我收到以下输出:

租户 1 - AADRoles 租户 1 - 组 租户 2 - AADRoles 租户 2 - 组
租户2管理员 租户 2 管理员组 租户2管理员 租户 2 管理员组

两个租户都从租户 2 获取角色和组,我猜这是因为计算属性直到最后才计算,然后它将使用最后一个值。我这样做只是一个白痴吗?

我想要实现的是找出来自 MainTenantUsers 的用户在我们的其他租户中拥有哪些权限和角色。我以为我会通过动态创建选择对象属性来输出它,但它并没有像我希望的那样工作。

SubTenantUsers 和 MainTenantUsers 变量包含来自 的信息Get-AzureADUserGet-AzureADDirectoryRoleGet-AzureADGroup帮助确定为各个用户分配了哪些组和角色。

0 投票
1 回答
336 浏览

powershell - Windows PowerShell - 未找到 Microsoft.Powershell.Commands.Utility

当我打开 VisualStudio 2019 时,我首先发现 PowerShell 无法正常工作。包管理器控制台无法正常工作,如下所示:

在我发现这个错误之后,我做了不同的事情,比如:完成了适用于 Visual Studio 2019 的所有更新、所有 Windows 10 更新、到处搜索错误但找不到类似的问题。也试过了sfc /scannow

我最初认为这只是一个 Visual Studio 错误,但随着我的深入搜索,我发现了一些建议,例如:write-host 'test'输入 Windows PowerShell,所以我做到了。 Powershell 中的错误

不仅我不能运行简单的命令,例如write-host 'test',我也不能运行Import-Module Microsoft.PowerShell.Utility来安装缺少的命令。

有人提出不包括重新安装 Windows 的想法吗?

$PSVersionTable 的输出:

姓名 价值
PS版本 5.1.19041.1023
PS版 桌面
PS兼容版本 {1.0、2.0、3.0、4.0...}
构建版本 10.0.19041.1023
CLR版本 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocol版本 2.3
序列化版本 1.1.0.1

操作系统:Windows 10 Pro 版本:21H1

0 投票
1 回答
83 浏览

powershell - 在 If 条件下验证字符串不为空/null

我正在编写一个脚本,该脚本将通过Read-Host(设置为$String)接受用户输入,并且我想避免任何可能由变量的空白值引起的问题。因为我会经常使用它,所以我想将它实现为一个验证没有使用无效字符的函数。

我想我可以使用 if 语句![string]::IsNullOrEmpty($String)作为条件之一:

我也试过这个:

在这两种情况下,当出现 $String 的 Read-Host 提示时,我只需按 Enter 键,脚本的行为就好像函数返回$True(然后遇到致命错误)。$ValidCharacters另一半有效 - 如果我包含函数未指定的字符,则按$False预期返回。

我确定我在这里遗漏了一些东西。我什至尝试做第二个嵌套 if 语句并得到相同的结果。

编辑:这是我调用函数并注意到问题的代码片段。