我想使用 Powershell 作为我的 Visual Studio 命令提示符,并且发现执行此操作的途径是通过 Powershell 社区扩展,但我在安装和导入 Pscx 时遇到了问题。
从正常(即不以管理员身份运行)Powershell提示符;如果我运行,Install-Module Pscx
我会收到错误
安装“C:\Program Files\WindowsPowerShell\Modules”中的模块需要管理员权限。使用具有管理员权限的帐户登录计算机,然后重试,或者通过在命令中添加“-Scope CurrentUser”来安装“D:\Documents\WindowsPowerShell\Modules”。您还可以尝试以提升的权限运行 Windows PowerShell 会话(以管理员身份运行)。
我采纳了建议并尝试运行Install-Module Pscx -Scope CurrentUser
,没有报告任何错误。但是当我运行时,Import-Module Pscx
我收到错误
未加载指定的模块“Pscx”,因为在任何模块目录中均未找到有效的模块文件。
运行后,Remove-Module Pscx
我以管理员身份运行了 Powershell 提示符,在那里我可以安装和导入 Pscx,但这样做之后,我仍然无法从非管理员 Powershell 提示符导入它。我最后的尝试是(在管理员提示符中)删除模块并再次安装它,但当我在非管理员提示符中-Scope AllUsers
尝试时,仍然会出现相同的错误。Import-Module Pscx
我从事开发人员工作已有 30 多年,但每次我尝试在 Powershell 中执行某些操作时,我都会感到自己很愚蠢。尽管有所有出色的文档,但我发现它并不容易使用。有人能帮助我摆脱当前的困境吗?我不仅想解决问题,还想了解发生了什么,希望它能帮助我真正理解为什么 Powershell 的行为看起来很奇怪,对我来说毫无意义。
我的 Powershell 版本是 5.0、build 10586、revision 494。
答案1
我已经知道问题出在哪里了。
Install-Module
with-Scope CurrentUser
在文件夹中安装了模块%USERPROFILE%\Documents\WindowsPowerShell\Modules
,但此文件夹未包含在 PSModulePath 环境变量中,因此Import-Module
找不到模块。一旦我弄清楚了这一点,我就会将以下内容添加到我的个人资料中,这样我就不会再遇到这种情况了。
if ($env:PSModulePath -notlike "*D:\Documents\WindowsPowerShell\Modules*")
{
$env:PSModulePath = $env:PSModulePath + ";D:\Documents\WindowsPowerShell\Modules"
}
请注意,虽然我%USERPROFILE%
已将C:\Users\SteveC
我的 Documents 文件夹从我的 SSD C 驱动器移至我的 HDD D 驱动器,因此%USERPROFILE%\Documents
解析为D:\Documents
。
答案2
- 从 CodePlex 下载 Pscx 包
- 将解压后的 Pscx 粘贴到 C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules 中
- 以管理员身份打开 Powershell 编辑器 ISE
- 跑步
Install-Module Pscx -AllowClobber
- 完毕