某些命令(例如 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/