PowerShell脚本未找到wget?

PowerShell脚本未找到wget?,powershell,windows-7,wget,Powershell,Windows 7,Wget,我有一个Windows7 64位的旧笔记本,每个星期天都能完美地执行PowerShell脚本。不幸的是,随着负载的增加,它开始崩溃,我决定买一台新电脑。在这台电脑上,我以前安装过Windows e;10 Pro 64位,即使在这里,脚本也是每个星期天执行的。由于Microsoft的更新策略,我从新电脑中删除了Windows10,并安装了64位Windows7。但是现在,同一个脚本崩溃,因为它找不到wget: $wg = Start-Process wget.exe -wait -NoNe

我有一个Windows7 64位的旧笔记本,每个星期天都能完美地执行PowerShell脚本。不幸的是,随着负载的增加,它开始崩溃,我决定买一台新电脑。在这台电脑上,我以前安装过Windows e;10 Pro 64位,即使在这里,脚本也是每个星期天执行的。由于Microsoft的更新策略,我从新电脑中删除了Windows10,并安装了64位Windows7。但是现在,同一个脚本崩溃,因为它找不到
wget

$wg = Start-Process wget.exe -wait -NoNewWindow -PassThru -ArgumentList $argList 
Gnu Wget安装正确(我认为)。它位于:

C:\Program Files (x86)\GnuWin32\bin\wget.exe
它甚至被输入HKEY_LOCAL_机器下的注册表中→ 软件→ WOW6432节点→ GnuWin32 | Wget | 1.11.4-1 |设置|安装路径:C:\Program Files(x86)\GnuWin32

尽管如此,如果我打开CMD控制台并输入
wget
(或
wget.exe
),我会得到:

订单“wget”拼写错误或找不到


如果PowerShell即使在重新启动电脑后仍能不断找到
wget
,我该怎么做?即使是记事本+,即使安装正确,CMD控制台也无法找到它(?)。这里出了什么问题?

如果希望在不指定命令路径的情况下运行命令,则需要将命令所在的目录添加到path环境变量中。注册表的软件分支中的安装路径与此无关

要将目录添加到当前和所有未来会话的路径,您需要执行以下操作:

$dir = "${env:ProgramFiles(x86)}\GnuWin32\bin"

# set PATH environment variable for current session
$env:Path += ";${dir}"

# set PATH environment variable for future sessions
$path = [Environment]::GetEnvironmentVariable('PATH', 'Machine')
$path += ";{$dir}"
[Environment]::SetEnvironmentVariable('PATH', $path, 'Machine')
但是,请注意,第二步(为将来的会话设置变量)仅在
$path
中没有使用Windows环境变量(
%something%
)时才能正常工作,因为该方法将值保存为注册表中的注册表项。如果PATH变量存储为REG_EXPAND_SZ值,则Windows仅扩展PATH变量中的环境变量

如果在
$path
中的某个位置有常规Windows环境变量,则必须使用正确的类型手动将值写入注册表

$key = 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment'
Set-ItemProperty -Path $key -Name 'Path' -Value $path -Type ExpandString
附录:


当然,只有当您希望以编程方式执行此操作时,以上所有内容才适用。对于手动方法,您始终可以通过GUI编辑环境变量并重新启动PowerShell。

如果您希望能够在不指定其路径的情况下运行命令,则需要将其所在的目录添加到path环境变量中。注册表的软件分支中的安装路径与此无关

要将目录添加到当前和所有未来会话的路径,您需要执行以下操作:

$dir = "${env:ProgramFiles(x86)}\GnuWin32\bin"

# set PATH environment variable for current session
$env:Path += ";${dir}"

# set PATH environment variable for future sessions
$path = [Environment]::GetEnvironmentVariable('PATH', 'Machine')
$path += ";{$dir}"
[Environment]::SetEnvironmentVariable('PATH', $path, 'Machine')
但是,请注意,第二步(为将来的会话设置变量)仅在
$path
中没有使用Windows环境变量(
%something%
)时才能正常工作,因为该方法将值保存为注册表中的注册表项。如果PATH变量存储为REG_EXPAND_SZ值,则Windows仅扩展PATH变量中的环境变量

如果在
$path
中的某个位置有常规Windows环境变量,则必须使用正确的类型手动将值写入注册表

$key = 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment'
Set-ItemProperty -Path $key -Name 'Path' -Value $path -Type ExpandString
附录:


当然,只有当您希望以编程方式执行此操作时,以上所有内容才适用。对于手动方法,您始终可以通过GUI编辑环境变量并重新启动PowerShell。

强烈建议:只需重新安装Notepad++并重新安装wget即可。请确保使用“安装程序/msi安装程序”,这是每一个可用的。我安装wget至少三次!gooly-您检查过path变量了吗?听起来您的路径不包括exe安装目录。@paulsm4当没有安装程序将安装路径添加到path环境变量时,这有什么帮助?我手动将wget路径添加到path,现在它可以工作了-但我仍然很惊讶安装程序没有在那里输入它。STRONG建议:只需重新安装Notepad++并重新安装wget。请确保使用“安装程序/msi安装程序”,这是每一个可用的。我安装wget至少三次!gooly-您检查过path变量了吗?听起来您的路径不包括exe安装目录。@paulsm4如果没有安装程序将安装路径添加到path环境变量中,这会有什么帮助?我手动将wget路径添加到path中,现在它可以工作了-但我仍然很惊讶安装程序没有在那里输入它。