我试图在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[]‘转换为参数'Path’所需的'System.String‘类型。不支持指定的方法。
我猜我必须在路径字符串中转义某些字符,但我不知道如何转义,也不知道是哪一个字符。或者可能是CMD中有一种converttostring函数?我在谷歌上找不到。在这里,我看到了一些关于如何为邮件函数修复它的例子,但是我不知道如何在我的代码中使用这些解决方案。如果这个问题已经回答了,请原谅。
发布于 2017-04-03 13:10:34
我认为您可能需要用大括号和引号包装整个命令,使其成为一个字符串和scriptblock,并在scriptblock前面加上一个符号,如下所示:
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
https://stackoverflow.com/questions/43185405
复制相似问题