首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CMD启动Powershell返回“无法将'System.Object[]‘转换为'System.String'”

从CMD启动Powershell返回“无法将'System.Object[]‘转换为'System.String'”
EN

Stack Overflow用户
提问于 2017-04-03 13:04:07
回答 1查看 866关注 0票数 1

我试图在PHP中使用PowerShell.exe -command $command,其中的命令是为新用户创建的。

我注意到它没有运行,并试图直接从CMD启动它(我相信这就是exec();所做的)。

我想要运行的代码:

代码语言:javascript
复制
powershell.exe -command New-ADUser -SAMAccountName "jajaap" -Instance "Get_ADUser -Identity UserTemplate" -Name "Jan Jaap" -DisplayName "Jan" -Path "OU=Users-NL,OU=Users,OU=Domain-Test,DC=Domain-controller,DC=com" -GivenName "Jan" -Surname "Jaap" -userPrincipalName "jan.jaap@example.com"

我得到的错误是:

New-ADUser :无法将'System.Object[]‘转换为参数'Path’所需的'System.String‘类型。不支持指定的方法。

我猜我必须在路径字符串中转义某些字符,但我不知道如何转义,也不知道是哪一个字符。或者可能是CMD中有一种converttostring函数?我在谷歌上找不到。在这里,我看到了一些关于如何为邮件函数修复它的例子,但是我不知道如何在我的代码中使用这些解决方案。如果这个问题已经回答了,请原谅。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-03 13:10:34

我认为您可能需要用大括号和引号包装整个命令,使其成为一个字符串和scriptblock,并在scriptblock前面加上一个符号,如下所示:

代码语言:javascript
复制
powershell.exe -command "& {New-ADUser -SAMAccountName 'jajaap' -Instance 'Get_ADUser -Identity UserTemplate' -Name 'Jan Jaap' -DisplayName 'Jan' -Path 'OU=Users-NL,OU=Users,OU=Domain-Test,DC=Domain-controller,DC=com' -GivenName 'Jan' -Surname 'Jaap' -userPrincipalName 'jan.jaap@example.com'}"

/ MSDN:

命令的值可以是"-",一个字符串。或者一个脚本块。如果命令的值为"-",则从标准输入读取命令文本。 脚本块必须用大括号({})括起来。只有在Windows PowerShell.exe中运行PowerShell时,才能指定脚本块。脚本的结果作为反序列化的XML对象而不是活动对象返回给父shell。 如果Command的值是字符串,命令必须是命令中的最后一个参数,因为在命令之后键入的任何字符都被解释为命令参数。 来源:https://msdn.microsoft.com/en-us/powershell/scripting/core-powershell/console/powershell.exe-command-line-help

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43185405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档