C# 在C中使用PSObject进行迭代#
我试图获取实例属性的值 但它总是给我零例外 我使用的代码如下C# 在C中使用PSObject进行迭代#,c#,powershell,C#,Powershell,我试图获取实例属性的值 但它总是给我零例外 我使用的代码如下 var xs = PowerShell.Create() .AddScript("Get-ADComputer -Identity COM-PC-003$ -Properties * | select operatingsystem, accountexpires") .AddCommand("out-string"); Collection<PSObject> results = xs.I
var xs = PowerShell.Create()
.AddScript("Get-ADComputer -Identity COM-PC-003$ -Properties * | select operatingsystem, accountexpires")
.AddCommand("out-string");
Collection<PSObject> results = xs.Invoke();
//Console.WriteLine(xs);
foreach (var str in results)
{
Console.WriteLine(str.Members["operatingsystem"].Value.ToString());
Console.ReadLine();
//System.Diagnostics.Debug.WriteLine(str.Properties["operatingsystem"].Value);
}
var xs=PowerShell.Create()
.AddScript(“获取ADComputer-Identity COM-PC-003$-Properties*|选择operatingsystem,accountexpires”)
.AddCommand(“输出字符串”);
收集结果=xs.Invoke();
//控制台写入线(xs);
foreach(结果中的var str)
{
Console.WriteLine(str.Members[“operatingsystem”].Value.ToString());
Console.ReadLine();
//System.Diagnostics.Debug.WriteLine(str.Properties[“operatingsystem”].Value);
}
如何解决此问题?您可以尝试执行以下操作:
while (true) {
Console.WriteLine("Enter Hostname");
var hn = Console.ReadLine();
var xs = PowerShell.Create().AddScript(
"$comp = Get-ADComputer -Identity " + hn +
" -Properties *" + Environment.NewLine +
"$obj = New-Object -TypeName psobject" +
" -Property @{Host=$comp.operatingsystem;accountexpires = $comp.accountexpires}" +
Environment.NewLine +
"$obj1 = $obj | select -ExpandProperty Host ; $obj2 = $obj | select -ExpandProperty accountexpires ; $out = $obj1 + ' ; ' + $obj2 ; $out").AddCommand("out-string");
Collection<PSObject> results = xs.Invoke();
//Console.WriteLine(xs);
foreach (var str in results)
{
Console.WriteLine("You want to see only OS vers? If its true - enter H, also enter E for see accountexpires or A for see all info");
ConsoleKeyInfo c = Console.ReadKey();
if (c.KeyChar == 'H')
{
Console.WriteLine(str.ToString().Split(';')[0]);
Console.ReadLine();
}
if (c.KeyChar == 'E')
{
Console.WriteLine(str.ToString().Split(';')[1]);
Console.ReadLine();
}
if (c.KeyChar == 'A')
{
Console.WriteLine(str.ToString());
Console.ReadLine();
}
}
}
while(true){
Console.WriteLine(“输入主机名”);
var hn=Console.ReadLine();
var xs=PowerShell.Create().AddScript(
“$comp=Get ADComputer-Identity”+hn+
“-Properties*”+Environment.NewLine+
“$obj=新对象-类型名称psobject”+
“-Property@{Host=$comp.operatingsystem;accountexpires=$comp.accountexpires}”+
环境新线+
“$obj1=$obj |选择-ExpandProperty主机;$obj2=$obj |选择-ExpandProperty帐户过期;$out=$obj1+';'+$obj2;$out”).AddCommand(“输出字符串”);
收集结果=xs.Invoke();
//控制台写入线(xs);
foreach(结果中的var str)
{
WriteLine(“您只想查看操作系统版本?如果为真-输入H,也输入E以查看accountexpires或A以查看所有信息”);
ConsoleKeyInfo c=Console.ReadKey();
如果(c.KeyChar=='H')
{
Console.WriteLine(str.ToString().Split(“;”)[0]);
Console.ReadLine();
}
如果(c.KeyChar=='E')
{
Console.WriteLine(str.ToString().Split(“;”)[1]);
Console.ReadLine();
}
如果(c.KeyChar=='A')
{
Console.WriteLine(str.ToString());
Console.ReadLine();
}
}
}
您可以尝试执行以下操作:
while (true) {
Console.WriteLine("Enter Hostname");
var hn = Console.ReadLine();
var xs = PowerShell.Create().AddScript(
"$comp = Get-ADComputer -Identity " + hn +
" -Properties *" + Environment.NewLine +
"$obj = New-Object -TypeName psobject" +
" -Property @{Host=$comp.operatingsystem;accountexpires = $comp.accountexpires}" +
Environment.NewLine +
"$obj1 = $obj | select -ExpandProperty Host ; $obj2 = $obj | select -ExpandProperty accountexpires ; $out = $obj1 + ' ; ' + $obj2 ; $out").AddCommand("out-string");
Collection<PSObject> results = xs.Invoke();
//Console.WriteLine(xs);
foreach (var str in results)
{
Console.WriteLine("You want to see only OS vers? If its true - enter H, also enter E for see accountexpires or A for see all info");
ConsoleKeyInfo c = Console.ReadKey();
if (c.KeyChar == 'H')
{
Console.WriteLine(str.ToString().Split(';')[0]);
Console.ReadLine();
}
if (c.KeyChar == 'E')
{
Console.WriteLine(str.ToString().Split(';')[1]);
Console.ReadLine();
}
if (c.KeyChar == 'A')
{
Console.WriteLine(str.ToString());
Console.ReadLine();
}
}
}
while(true){
Console.WriteLine(“输入主机名”);
var hn=Console.ReadLine();
var xs=PowerShell.Create().AddScript(
“$comp=Get ADComputer-Identity”+hn+
“-Properties*”+Environment.NewLine+
“$obj=新对象-类型名称psobject”+
“-Property@{Host=$comp.operatingsystem;accountexpires=$comp.accountexpires}”+
环境新线+
“$obj1=$obj |选择-ExpandProperty主机;$obj2=$obj |选择-ExpandProperty帐户过期;$out=$obj1+';'+$obj2;$out”).AddCommand(“输出字符串”);
收集结果=xs.Invoke();
//控制台写入线(xs);
foreach(结果中的var str)
{
WriteLine(“您只想查看操作系统版本?如果为真-输入H,也输入E以查看accountexpires或A以查看所有信息”);
ConsoleKeyInfo c=Console.ReadKey();
如果(c.KeyChar=='H')
{
Console.WriteLine(str.ToString().Split(“;”)[0]);
Console.ReadLine();
}
如果(c.KeyChar=='E')
{
Console.WriteLine(str.ToString().Split(“;”)[1]);
Console.ReadLine();
}
如果(c.KeyChar=='A')
{
Console.WriteLine(str.ToString());
Console.ReadLine();
}
}
}
如果在powershell中键入相同的命令,您是否看到任何输出?字符串没有operatingsystem
属性。请删除.AddCommand(“输出字符串”)
如果在powershell中键入相同的命令,您是否看到任何输出?字符串没有operatingsystem
属性。请删除.AddCommand(“输出字符串”)代码>