如何在无法访问 $profile 时使 PS 文件在全局范围内可见?

How to enable a PS file to be globally seen when $profile isn't accessible?

通常我将所有脚本放在 $PROFILE 文件中。但是,现在我在公司网络中,虽然路径似乎已设置(当我在控制台中键入 $profile 时我可以看到路径),但我不能访问它(当我执行 type $profilenotepad.exe $profile 时出现路径错误)。

最理想的是,我希望能够像往常一样访问该文件,但客户是一家相当大的公司,与来自 Dilbert 的 Murdoc 配对安全,所以我确信与该服务交谈毫无意义办公桌。

所以,我唯一的选择是创建一个本地文件(例如 c:\scripts\utils.ps)并编辑它包含我所有的实用程序。问题是我不知道如何使该文件中的函数在控制台中作为 runanble 命令可用。

如何在 PS 控制台中指向自定义文件作为可执行命令的容器?

(也欢迎提出其他方法建议。)

你能试试下面的方法吗?

  • 如果可能,请创建配置文件。

    New-Item $PROFILE -ItemType File
    
  • 看看您是否可以创建任何其他配置文件。

    $PROFILE | gm | ? MemberType -eq "NoteProperty" | % { $PROFILE.($_.Name) }
    
  • 创建一个 powershell 快捷方式到..

    powershell.exe -NoExit -Command ". "C:\Path\To\File.ps1""
    

如果您不能执行任何这些操作,则需要请求您的管理员授予您更多权限,您也可以将其添加到您的 PATH 并手动 运行它在启动时..

将实用程序脚本转换为 module 并将路径添加到 PSModulePath 环境变量。从您的模块导出的任何函数都将被即时加载。与配置文件脚本不同,但可能达到大致相同的目的。

您可能仍然需要处理阻止您的脚本 运行 的政策,例如执行政策。如果将其存储在网络驱动器上,您可能会遇到路径是可信位置的问题,在这种情况下,您希望在 $PSModulePath 变量中完全限定 UNC 路径。