powershell - cmdlet 如何确定它是从作业还是从 RunSpace 调用的?
问题描述
我正在编写一些 cmdlet,如果它们是从作业或 RunSpace 的上下文中调用的,需要做一些额外的事情吗?
如果这些 cmdlet 未从 Job 或 RunSpace 运行,则进度和状态显示在控制台上。但是,如果它们在 Job 或 RunSpace 的上下文中运行,则会通过文件报告。我不想要求用户做其他事情,而是想自动检测这种情况。
解决方案
您可以根据$Host.Name
(在 PowerShell 代码中)/ cmdlet 基类.Name
的属性的.Host
值PSCmdlet
(在实现 cmdlet 的 C# 代码中)的值做出决定,这是托管 PowerShell 的组件的名称:[1]
- PowerShell代码:
$outputToFile = $Host.Name -in 'ServerRemoteHost', 'Default Host'
- C# 代码(在派生自的类中
PSCmdlet
):
bool outputToFile = Host.Name == "ServerRemoteHost" || Host.Name == "Default Host";
Default Host
使用PowerShell SDK(运行空间) /线程作业时会报告字符串。
[1]自动$Host
变量报告当前的 PowerShell 主机,它是一个从 .NET 派生的 .NET 类System.Management.Automation.Host.PSHost
。
推荐阅读
- scala - 比较时间戳列 - Spark scala
- javascript - 在 Nuxt.js 中以编程方式创建组件
- javascript - 使用 axios 获取数据时,React App URL 和 Backend URL 被连接起来
- python - 在python中使用列表查找和合并
- docker - 创建挂载源路径只读文件系统时出错
- python - 无法在 Python 中进行 Miller-Rabin 素数测试
- debugging - Visual Studio Code v1.55.1,调试模式被杀
- python - 有没有办法使用操纵杆登录树莓派
- regex - 需要正则表达式命令来提取具有 2 点 (.) 的完整文件名
- python - 在 python 中使用 zip 时,'int' 对象不可迭代