PowerShell Get-ChildItem在C#中调用
本文关键字:调用 Get-ChildItem PowerShell | 更新日期: 2023-09-27 18:25:41
下面的powershell脚本要转换成C#。
$file = $solution.DisplayName.substring(0, $solution.DisplayName.Length - 4) + ".dll"
Get-ChildItem "C:'Windows'Microsoft.NET'assembly" -Filter $file -Recurse | Select-Object -ExpandProperty VersionInfo
我试过这个,但没能成功。
string dllName = "MyOwn.dll";
PowerShell ps = PowerShell.Create();
ps.AddCommand("Get-ChildItem");
ps.AddParameter(@"C:'Windows'Microsoft.NET'assembly");
ScriptBlock filter = ScriptBlock.Create(dllName);
ps.AddParameter("-Filter", filter);
foreach (PSObject result in ps.Invoke())
{
Console.WriteLine(
"{0,-24}{1}",
result.Members["Length"].Value,
result.Members["Name"].Value);
}
还有C#中的Get-ChildItem等价物吗?
请帮忙。
谢谢。
我知道这是一个相当古老的问题,但由于它没有答案,而且与我刚刚回答的一个新问题有关,我想我也可以解决这个问题。我发现执行"Get-ChildItem"的方法是,而不是使用PowerShell.Create()
,而是使用RunspaceInvoke
并按原样抛出命令
using (RunspaceInvoke invoke = new RunspaceInvoke())
{
Collection<PSObject> result = invoke.Invoke("Get-ChildItem '"C:''Windows''Microsoft.NET''assembly'" -Filter '"Microsoft.GroupPolicy.Management.Interop.dll'" -Recurse | Select-Object -ExpandProperty VersionInfo");
}