Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PowerShell中获取运行时环境变量的进程信息?_Powershell - Fatal编程技术网

如何在PowerShell中获取运行时环境变量的进程信息?

如何在PowerShell中获取运行时环境变量的进程信息?,powershell,Powershell,我想获取PowerShell中正在运行的进程的所有环境变量。 我知道我可以使用“get Process”获取启动设置的此类信息。如果另一个服务在运行时添加了一个变量,则此处缺少这些变量。 有什么建议吗?这实际上比你想象的要复杂得多,因为这些信息的唯一提供者是内核。唯一一个很好的文档化函数是GetEnvironmentStrings,它只适用于调用过程。如果您想跨进程,必须使用NtQueryInformationProcess和ReadProcessMemory来嵌入一些未记录的内部。当然,它是可

我想获取PowerShell中正在运行的进程的所有环境变量。 我知道我可以使用“get Process”获取启动设置的此类信息。如果另一个服务在运行时添加了一个变量,则此处缺少这些变量。
有什么建议吗?

这实际上比你想象的要复杂得多,因为这些信息的唯一提供者是内核。唯一一个很好的文档化函数是
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