VB.net和powershell变量

VB.net和powershell变量,vb.net,powershell,Vb.net,Powershell,我有一个用VB.net运行的Visual Studio表单,我正在收集设置广告用户所需的信息。最后,只需将此信息传递到Powershell,无需返回信息。但在此之前,我需要它检查打印机代码是否已分配给某人,然后再允许将其提交给其他用户。我为它编写了一个简单的powershell脚本。 (我们使用Pager字段存储打印机代码。) 我设置了我找到的代码,并试图将其修改为我的脚本,但它不断崩溃 Dim results As Collection(Of PSObject) = MyPipeline.In

我有一个用VB.net运行的Visual Studio表单,我正在收集设置广告用户所需的信息。最后,只需将此信息传递到Powershell,无需返回信息。但在此之前,我需要它检查打印机代码是否已分配给某人,然后再允许将其提交给其他用户。我为它编写了一个简单的powershell脚本。 (我们使用Pager字段存储打印机代码。)

我设置了我找到的代码,并试图将其修改为我的脚本,但它不断崩溃

Dim results As Collection(Of PSObject) = MyPipeline.Invoke()
它告诉我:System.Management.Automation.dll中发生“System.Management.Automation.ParseException”类型的未处理异常


如果我运行他的小6+5基本示例脚本,它会工作,但当我尝试检索信息并返回名称时,它不喜欢它。如果它找到了,我如何让它返回此人的姓名?由于它不会运行,我甚至不确定以$args[0]的形式传递打印机代码是否有效。

您的
结果
需要一组PowerShell对象。当您通过管道将
Get ADUser
命令传输到
Format Table
时,它会有效地将对象剥离为字符串流。尝试不使用
| FT名称

 Import-Module ActiveDirectory  #if you're using powershell 3 or later, this may be redundant
 # $Page = $args[0] # don't need to do this
 $results = Get-ADUser -Filter { Pager -like $args[0] }
 Write-Verbose $results
 #Write-Verbose $results.Name  #try this if the above one works

更新:

详细写入
可能会导致问题

试试这个:

 Get-ADUser -Filter { Pager -like $args[0] }
只有那一行作为总PS代码。(假设您有PowerShell 3.0或更高版本,则不需要导入模块)该行将返回类型为
TypeName:Microsoft.ActiveDirectory.Management.ADUser
(来自“获取ADUser用户名”|获取成员)的对象

您也可以直接使用.Net对象类型,而无需PowerShell。除了我在PowerShell工作时学到的知识外,我对.NET一无所知


使用.NET访问AD时,.

您的
结果需要一组PowerShell对象。当您通过管道将
Get ADUser
命令传输到
Format Table
时,它会有效地将对象剥离为字符串流。尝试不使用
| FT名称

 Import-Module ActiveDirectory  #if you're using powershell 3 or later, this may be redundant
 # $Page = $args[0] # don't need to do this
 $results = Get-ADUser -Filter { Pager -like $args[0] }
 Write-Verbose $results
 #Write-Verbose $results.Name  #try this if the above one works

更新:

详细写入
可能会导致问题

试试这个:

 Get-ADUser -Filter { Pager -like $args[0] }
只有那一行作为总PS代码。(假设您有PowerShell 3.0或更高版本,则不需要导入模块)该行将返回类型为
TypeName:Microsoft.ActiveDirectory.Management.ADUser
(来自“获取ADUser用户名”|获取成员)的对象

您也可以直接使用.Net对象类型,而无需PowerShell。除了我在PowerShell工作时学到的知识外,我对.NET一无所知


使用.NET访问广告时,.

得到了相同的结果,我尝试取消底线注释,看看是否有效,但没有成功。有没有比我下面的示例更好的方法将一个结果返回到VisualStudio?您可以编写PS脚本来仅返回第一个结果。您可能希望验证集合中的项目计数,如果没有一个结果,则返回错误。尝试
Return$results
而不是
Write Verbose$results
?同样的结果,我尝试取消底线注释,看看是否有效,但没有成功。有没有比我下面的示例更好的方法将一个结果返回到VisualStudio?您可以编写PS脚本来仅返回第一个结果。您可能希望验证集合中的项目计数,如果没有一个结果,则返回错误。尝试
返回$results
而不是
编写详细的$results