New-Object:术语New-Object不被识别为cmdlet的名称

时间:2014-07-04 15:01:01

标签: powershell sharepoint-2013 windows-server-2012

我想为SharePoint中的app dev配置高可信应用,为此,我首先需要在powershell编辑器中插入一些命令,如:

$publicCertPath = "C:\Certs\HighTrustSampleCert.cer" 
$certificate = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($publicCertPath)

我在Windows Server 2012 R2上使用Windows PowerShell,其中包括Windows PowerShell 4,默认情况下包含新对象cmd-let ...但我不明白,为什么不操作我的操作系统认识到这个命令......我没有停止出现以下错误:New-Object:术语' New-Object'不被识别为cmdlet的名称。

当我打开powerShell时,我得到了这个:

  

*选择:

     
    

术语'选择对象'不被识别为cmdlet的名称,     功能,脚本文件或可操作程序。检查拼写     名称,或者如果包含路径,请验证路径是否正确     再试一次。在C:\ Program Files \ Common Files \ Microsoft Shared \ Web     Server Extensions \ 15 \ CONFIG \ POWERSHELL \ Registration \ SharePoint.ps1:1     焦炭:16     + $ ver = $ host |选择版本     + ~~~~~~         + CategoryInfo:ObjectNotFound:(Select-Object:String)[],逗号ndNotFoundException         + FullyQualifiedErrorId:CommandNotFoundException Set-location:术语' Set-location'不被识别为cmdlet的名称,     功能,脚本文件或可操作程序。检查拼写     名称,或者如果包含路径,请验证路径是否正确     再次尝试在C:\ Program Files \ Common Files \ Microsoft Shared \ Web Server     扩展\ 15 \ CONFIG \ POWERSHELL \ Registration \ SharePoint.ps1:4 char:1     +设置位置$ home     + ~~~~~~~~~~~~         + CategoryInfo:ObjectNotFound:(Set-location:String)[],Comman dNotFoundException         + FullyQualifiedErrorId:CommandNotFoundException *

  

我认为这是正常的,直到今天......它与错误有任何关系吗?这是洞(新对象)异常堆栈:

  

新对象:术语'新对象'不被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查拼写   如果包含名称,或者包含路径,请验证路径是否正确   正确,然后再试一次。在行:1字符:16   + $ certificate = New-Object System.Security.Cryptography.X509Certificates.X509Cert ...   + ~~~~~~~~~~       + CategoryInfo:ObjectNotFound:(New-Object:String)[],CommandN otFoundException       + FullyQualifiedErrorId:CommandNotFoundException

ps:我想提一下,当我使用enter-psSession并远程工作时,命令new-object被识别,但sharepoint命令(如Get-SPAuthenticationRealm)不再被识别......

3 个答案:

答案 0 :(得分:3)

您的PowerShell安装似乎已损坏且需要修复。 New-Object cmdlet由Microsoft.PowerShell.Utility模块导出,该模块是Core PowerShell模块之一,默认情况下应在所有PowerShell安装中导入。

答案 1 :(得分:0)

这可能是因为PSModulesPath的注册表项条目未预先填充默认的PowerShell模块路径。

$PSModulePath = Get-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -Name "PSModulePath"

$newPSModulePath = $PSModulePath.PSModulePath + ";C:\Windows\System32\WindowsPowerShell\v1.0\Modules"

Set-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -Name "PSModulePath" -value $newPSModulePath

答案 2 :(得分:-1)

这里没有验证,但我推进了Powershell遇到运行时错误导致它破坏其进程的假设。