我正在使用带有 PSCX 2.0 模块的 Powershell 2.0。
在 Windows PowerShell ISE 中编写 PS 脚本时,PSCX 模块中的命令不可用。例如,从 Windows PowerShell ISE 运行“Get-DriveInfo”会导致错误。从 Powershell 运行“Get-DriveInfo”则可正常工作。
我猜 Windows PowerShell ISE 不会加载我的 PS 配置文件(这太疯狂了)。有人知道原因吗?该怎么做才能让它正常工作?
答案1
我可以导入 pscx 2.0 并执行 Get-DriveInfo。ISE 有自己的配置文件,要找到它的位置,请键入 $profile 并按回车键(如果它不存在,则可能需要创建它):
C:\用户\用户名\文档\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
答案2
Shay 是对的。你应该注意,如果你真的想将 PowerShell 配置文件加载到 ISE 配置文件中,只需将以下行添加到 ISE 配置文件中即可对其进行点源化:
. C:\Users\UserName\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
ISE 拥有自己的配置文件是有充分理由的。有些操作在 ISE 中可以做,但在其他地方却做不到(例如,定义出现在 ISE 中的自定义菜单项)。使用配置文件在启动时自动执行这些操作很有用,但是您需要不同的配置文件来控制在哪里执行哪些操作。
此外,您还可以在 Windows PowerShell 控制台中执行一些在 ISE 中无法执行的操作。例如,您可以在 PowerShell 控制台中创建显示多种颜色的自定义提示,但 ISE 目前不支持多色提示。这也是通常在配置文件脚本中完成的操作。
如果您在不同的主机中进行不同的自定义,则应设置一个脚本,其中包含您希望在每个配置文件中完成的所有常见操作,然后将该脚本点源化到每个配置文件中。然后将任何特定于主机的工作放入特定于主机的配置文件中。不过,在大多数情况下,除非您正在进行一些快速自定义或为 ISE 创建附加组件,否则您只需要处理共享脚本。