powershell - 某些命令(例如 IISRESET 和 ROBOCOPY)已在 Powershell v4 中停止工作

标签 powershell shell powershell-4.0 windows-server-2012-r2

某些命令(例如 IISRESET 和 ROBOCOPY)已停止在 Powershell v4 中工作

我有一个相当大的脚本,在某些时候运行这两个命令,但现在这两个命令都给了我一般错误:

iisreset:术语“iisreset”未被识别为 cmdlet、函数、脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。

这些命令在 CMD 中仍然有效。

所做的唯一更改是我安装了 WMF5 和 Powershell 5,但尚未重新启动服务器(数据中心中运行的 USB 的大量副本),因此我仍在运行 Powershell 4。甚至安装了 Powershell 7 并尝试运行脚本,但它提到它是一个 PS4 模块,并且我需要将 WMF5 与 Powershell 5.1 一起安装(正在等待安装。5.0 是..)

这个 powershell 脚本对我来说非常重要,我有几天都无法重新启动。

您认为是 WMF5 安装引起的还是 Powershell 7 安装引起的?在发现脚本不再工作后,我删除了 Powershell 7。假设这是问题所在,在我可以重新启动之前有任何解决方法吗?

Windows Server 2012 R2 Powershell 4.0 和 5.0 等待重新启动

我也刚刚安装了 CMDer,但我认为它不会有任何关系。

最佳答案

iisreset 并不是真正的 powershell 命令,它是一个位于 C:\Windows\System32 中的 EXE 文件 因此,首先检查该文件是否存在,如果存在,请检查 PowerShell 中的环境变量 $Env:Path。应该包含 C:\WINDOWS\system32;以及许多其他路径。

通过运行以下命令检查 $Env:Path:

($env:path).split(";")

如果 C:\WINDOWS\system32 中有 iisreset.exe 文件,并且 C:\WINDOWS\system32 已添加到 PowerShell 中的 $Env:Path 中,则应该能够通过键入以下内容来运行它: iisreset.exe

将路径添加到 $Env:Path

$ENV:PATH="$ENV:PATH;C:\WINDOWS\system32"

但是除非您更新注册表,否则这不会是永久性的:

$oldpath = (Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).path
$newpath = "$oldpath;C:\WINDOWS\system32"
Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH -Value $newPath
(Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).Path

然后验证其正确运行:

($env:path).split(";")

关于powershell - 某些命令(例如 IISRESET 和 ROBOCOPY)已在 Powershell v4 中停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63144984/

相关文章:

linux - 如何在远程服务器上以 root 身份执行本地脚本?

excel - 如何使用 Powershell 将 CSV 导出到 Excel

linux - 通过 ssh 在远程机器上运行 jq 并覆盖文件

linux - 使用 'rm' 命令删除文件/文件夹时如何启用确认警报?

powershell - 如何以加速方式获取 PowerShell 类型加速器列表?

wpf - 如何在 PowerShell 中将事件处理程序附加到在 XAML 中定义的 DataGridTemplateColumn 中的按钮?

powershell - Concat invoke-SqlCmd查询字符串不起作用

PowerShell - 嵌套 Try/Catch/Finally 命令

powershell - 卸载以特定字符串开头的所有软件

powershell - 如何在 PowerShell 中将 Ticks 字符串转换为日期时间?