C# 如何使用通过.Net PowerShell对象运行的PowerShell脚本获取windows注册表属性值?
我正在使用以下PowerShell脚本返回有关安装在PC上的应用程序的信息:C# 如何使用通过.Net PowerShell对象运行的PowerShell脚本获取windows注册表属性值?,c#,.net,powershell,C#,.net,Powershell,我正在使用以下PowerShell脚本返回有关安装在PC上的应用程序的信息: Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall" 当我在Windows Powershell ISE中运行此脚本时,我会看到如下结果: 名称属性 ---------连接管理器系统组件:1 DirectDrawEx Docker桌面显示图标:C:\Program Files\Docker\Docker\
Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall"
当我在Windows Powershell ISE中运行此脚本时,我会看到如下结果:
名称属性
---------连接管理器系统组件:1DirectDrawEx
Docker桌面显示图标:C:\Program Files\Docker\Docker\Docker Desktop Installer.exe
显示名称:Docker桌面
显示版本:2.1.0.4
版本:39773
安装位置:C:\Program Files\Docker\Docker
NoModify:1
诺雷帕尔:1
出版商:Docker Inc.
频道名称:稳定
频道URL:
卸载字符串:“C:\Program Files\Docker\Docker\Docker桌面
Installer.exe“卸载 我从C#.Net应用程序调用脚本,如下所示:
using (var ps = PowerShell.Create())
{
ps.Runspace = p_runspace;
ps.AddScript("Get-ChildItem ""HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall""");
IEnumerable<PSObject> commandOutput = ps.Invoke();
}
使用(var ps=PowerShell.Create())
{
ps.运行空间=p_运行空间;
ps.AddScript(“Get ChildItem”“HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall”“”;
IEnumerable commandOutput=ps.Invoke();
}
如何以编程方式在C中访问在ISE中运行脚本时返回的脚本(Publisher、DisplayName、DisplayVersion)时返回的属性?
我在我的应用程序中检查了PSObject的属性,它们与ISE不匹配
谢谢,当使用调用时,从PowerShell返回的JohnB对象实际上并不在对象的顶层具有所有相同的成员,有点PowerShell“魔力”使它在PowerShell会话中以这种方式工作 如果需要属性值,则需要检查返回的属性的
属性
:
foreach(commandOutput中的PSObject obj){
Object val=obj.Properties['PropertyName'].Value
}
其中
PropertyName
是您想要的属性名称。为什么不直接在C#?itsme86中查询它们?我们正在使用PowerShell脚本,并通过.Net应用程序在远程端点上运行它们。不能直接使用C#库。请在命令行中使用:REG QUERY KeyName。见:
using (var ps = PowerShell.Create())
{
ps.Runspace = p_runspace;
ps.AddScript("Get-ChildItem ""HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall""");
IEnumerable<PSObject> commandOutput = ps.Invoke();
}