如何在PowerShell中获取运行时环境变量的进程信息?
我想获取PowerShell中正在运行的进程的所有环境变量。 我知道我可以使用“get Process”获取启动设置的此类信息。如果另一个服务在运行时添加了一个变量,则此处缺少这些变量。如何在PowerShell中获取运行时环境变量的进程信息?,powershell,Powershell,我想获取PowerShell中正在运行的进程的所有环境变量。 我知道我可以使用“get Process”获取启动设置的此类信息。如果另一个服务在运行时添加了一个变量,则此处缺少这些变量。 有什么建议吗?这实际上比你想象的要复杂得多,因为这些信息的唯一提供者是内核。唯一一个很好的文档化函数是GetEnvironmentStrings,它只适用于调用过程。如果您想跨进程,必须使用NtQueryInformationProcess和ReadProcessMemory来嵌入一些未记录的内部。当然,它是可
有什么建议吗?这实际上比你想象的要复杂得多,因为这些信息的唯一提供者是内核。唯一一个很好的文档化函数是
GetEnvironmentStrings
,它只适用于调用过程。如果您想跨进程,必须使用NtQueryInformationProcess
和ReadProcessMemory
来嵌入一些未记录的内部。当然,它是可以编写的,但我不知道有任何C#中的现成代码(可以轻松地提升到PowerShell中)。如果你真的需要这个,或者你可以使用一个手工工具,比如进程资源管理器。注意,如果你只关心PowerShell启动后传递给新进程的值,而不是一个特定进程的环境变量,这非常简单,因为您只需启动一个新实例:powershell-Command'dir env:|选择名称、值| ConvertTo Csv'| ConvertFrom Csv
。这实际上比您想象的要复杂得多,因为此信息的唯一提供者是内核。唯一一个很好的文档化函数是GetEnvironmentStrings
,它只适用于调用过程。如果您想跨进程,必须使用NtQueryInformationProcess
和ReadProcessMemory
来嵌入一些未记录的内部。当然,它是可以编写的,但我不知道有任何C#中的现成代码(可以轻松地提升到PowerShell中)。如果你真的需要这个,或者你可以使用一个手工工具,比如进程资源管理器。注意,如果你只关心PowerShell启动后传递给新进程的值,而不是一个特定进程的环境变量,这非常简单,因为您只需启动一个新实例:powershell-Command'dir env:|选择名称、值| ConvertTo Csv'| ConvertFrom Csv
。