我试图通过执行批处理文件为不熟悉Powershell的帮助台人员提供运行一次性Powershell功能的能力。在批处理文件中,我使用bypass executionpolicy启动powershell,导入并运行该函数。另外,我想使用Show-Command为它们提供一个图形用户界面,使参数更加明显。这运行,但显然任何代码都使用&运算符在其自己的子范围内运行。这意味着当带有参数的命令返回到“父”Powershell窗口时,它将失去在子范围内导入的函数的知识。这是我在批处理文件中的内容:
powershell.exe -noprofile -noexit -executionpolicy bypass -command "& {. \\server\share\New-DriveRemapScript.ps1;Show-Command New-DriveRemapScript}"
启动的Powershell窗口仍然存在,但是当我按下Show-Command返回的命令文本时,我得到“New-DriveRemapScript:无法识别”New-DriveRemapScript“一词......”
答案 0 :(得分:0)
尝试使用-File
- 如果您想要启动单个PowerShell脚本,这是最好的。
powershell.exe -File "\\server\share\New-DriveRemapScript.ps1" -ExecutionPolicy Bypass
然后在New-DriveRemapScript.ps1
中可能只包含:
Function New-DriveRemapScript {
...
}
最后加入
Show-Command New-DriveRemapScript
这将确保加载命令,然后在调用文件时执行。
答案 1 :(得分:0)
我想在没有"运行"我的脚本文件中的函数。这样,功能文件可以与精明的Powershell用户共享,他们也知道如何在他们的个人资料中点源。我没有完美的解决方案,但我的解决方法是将函数定义为Global(Global:New-DriveRemapScript),以便在子范围退出后它仍然可用。然后上面的批处理文件代码按预期工作。