【发布时间】:2021-07-27 03:34:22
【问题描述】:
我是 Powershell 新手。当我从 ps1 文件中运行以下命令时:
add-computer -DomainName "example.com" -NewName "adfsserver" -restart
...我收到此错误:
A positional parameter cannot be found that accepts argument 'example.com'
+ add-computer ?DomainName "example.com" -NewName "adfsserver" -restart
有趣的是,如果我只是打开一个 PowerShell 窗口并粘贴此命令,它就可以正常工作(尽管它会提示我输入凭据)。
对我来说,位置参数是一个参数,其值由它在参数列表中的相对位置决定。我没有看到我正在使用任何位置参数,我正在使用命名参数(或命名键,无论 Powershell 调用它)。根据示例here,我正确使用了-DomainName。我不能说它反对“-DomainName”或“example.com”。
对于我的一生,我不明白为什么当我手动输入命令时它工作得非常好 - Windows 是否有不同的 PowerShell 解析器在不同的地方以不同的方式工作?
【问题讨论】:
-
确保您的破折号不是 endash 或 emdash。
?表示无法识别的字符,这是典型的 ASCII 和 endash 和 emdash 字符。您可能是从明显难以区分的位置复制的 -
除了@AdminOfThings 有用的评论,您还可以使用
Splatting来避免此类错误。
标签: powershell