IISRESET 和 ROBOCOPY 等某些命令已在 Powershell v4 中停止工作

Certain commands like IISRESET and ROBOCOPY have stopped working in Powershell v4

IISRESET 和 ROBOCOPY 等特定命令已在 Powershell v4 中停止工作

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

iisreset : The term 'iisreset' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

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

所做的唯一更改是我安装了 WMF5 和 Powershell 5,但尚未重新启动服务器(在数据中心的 USB 运行 上有很多副本),所以我仍然是 运行 Powershell 4。我什至安装了 Powershell 7 并尝试了 运行 脚本,但它提到它是一个 PS4 模块,我需要与 Powershell 5.1(待定)一起安装 WMF5安装。好吧,5.0 是..)

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

您认为是 WMF5 安装导致了这个还是 Powershell 7 安装?在看到脚本不再工作后,我删除了 Powershell 7。假设这是问题所在,在我可以重新启动之前是否有任何解决方法?

Windows 服务器 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(";")