为了补充Keith Hill 的有用答案,提供更多信息:
"$computer\admin"和不带引号的形式 ,都$computer\admin可以工作,因为不带引号的字符串参数被隐式处理为好像它们被"..."- 括起来(双引号),即作为执行字符串插值的可扩展字符串(用它们的值替换嵌入的变量引用和表达式),如与不解释其内容的逐字字符串('...',单引号)相反。
如有疑问,请"..."显式使用,尤其是当字符串包含元字符|时<
有关如何将不带引号的标记解析为命令参数的完整规则,请参阅此答案。
陷阱:
您尝试的部分引用:
'$computer'\admin
即使纠正为"$computer"\admin使插值工作,也不会起作用,因为 PowerShell - 也许令人惊讶 - 然后将值$computer和逐字字符串\admin作为两个参数传递。只有当带有部分引用的复合字符串以未引用的字符串开头时,它才会被识别为单个参数(例如$computer"\admin"可以工作) - 请参阅此答案以获取更多信息。
另一个值得注意的缺陷是,只有独立的变量引用(例如$computer和$env:COMPUTERNAME)才能按原样嵌入"..."; 要嵌入一个表达式(包括属性访问和索引访问)或命令,您需要将它们包含在$(...)子表达式运算符中。例如,要嵌入表达式的值$someArray[0]或$someObj.someProp可扩展的字符串,您必须使用"$($someArray[0])"或"$($someObj.someProp)"- 请参阅此答案以获取完整规则。