变量不被识别为cmdlet函数的名称。等等

时间:2016-02-16 16:09:42

标签: powershell

我是PowerShell的新手,我有一个脚本来检索一些操作系统属性。它开始......

$ntfsDisableLastAccessUpdate = (Get-ItemProperty HKLM:\System\CurrentControlSet\Control\FileSystem -Name NtfsDisableLastAccessUpdate  | Out-String).Split("`n")[2] -replace "\r",""

这似乎可以在本地运行它,但在其他地方运行时会产生以下错误:

    Invoke-Expression : The term '���$ntfsDisableLastAccessUpdate' is not 
recognized as the name of a cmdlet, function, script file, or operable 
program. Check the spelling of the name, or if a path was included, verify 
that the path is correct and try again. 
At line:1 char:62 
+ 
~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo : ObjectNotFound: (���$ntfsDisableLastAccessUpdate 
:String) [Invoke-Expression], CommandNotFoundException 
+ FullyQualifiedErrorId : CommandNotFoundException,Microsoft.PowerShell.Co 
mmands.InvokeExpressionCommand 

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

���肯定代表编码问题。这意味着问题在于如何保存文件以及如何读取文件。后者是一个缺失的重要部分。

我不明白为什么你会在本地使用Invoke-Expression作为你的脚本。 Invoke-Expression适用于字符串,这是否意味着您在脚本文件中读取字符串?

无论哪种方式from the comments,您都可以删除有问题的字符并继续前进。