【问题标题】:Starting Powershell from CMD returns "Cannot convert 'System.Object[]' to the type 'System.String'"从 CMD 启动 Powershell 返回“无法将 'System.Object[]' 转换为 'System.String' 类型”
【发布时间】:2017-04-03 22:10:53
【问题描述】:

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

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

我正在尝试运行的代码:

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[]”转换为类型 参数“路径”需要“System.String”。指定的方法不是 支持。

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

【问题讨论】:

    标签: php windows powershell cmd


    【解决方案1】:

    我认为您可能需要用花括号和引号将整个命令包装起来,使其成为一个字符串和一个脚本块,并在脚本块前面加上一个&符号,如下所示:

    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:

    Command 的值可以是“-”,一个字符串。或脚本块。如果 Command 的值为“-”,从标准输入读取命令文本。

    脚本块必须用大括号 ({}) 括起来。您可以指定一个 仅当在 Windows PowerShell 中运行 PowerShell.exe 时才会阻止脚本。 脚本的结果作为 反序列化的 XML 对象,而不是活动对象。

    如果Command的值是一个字符串,Command必须是最后一个 命令中的参数,因为在命令之后键入的任何字符 command 被解释为命令参数。

    来源:https://msdn.microsoft.com/en-us/powershell/scripting/core-powershell/console/powershell.exe-command-line-help

    【讨论】:

    • 嗨,马克,感谢您的快速帮助。我正在尝试您上面所说的方式,并收到此错误:字符串缺少终止符:'。 + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
    • 你确定你的字符串末尾有单引号'?
    • 我确定我添加了,我复制了你上面所说的内容。
    • 我实际上看到了同样的错误。让我们翻转单引号和双引号。我会修改我的答案。
    • 请告诉我,我也在胡闹,如果我弄明白了我也会更新。感谢您迄今为止的帮助!作为第一篇文章,我得到帮助的速度比预期的要快。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 2020-03-17
    相关资源
    最近更新 更多