使用Powershell时无法找到Connect-ServiceFabricCluster cmdlet

时间:2017-04-11 16:47:11

标签: powershell azure azure-service-fabric powershell-v4.0 azure-powershell

我试图关注有关通过PowerShell部署服务架构应用的this文章,但我遇到运行Connect-ServiceFabricCluster cmdlet的问题。我得到以下内容:

Connect-ServiceFabricCluster : The term 'Connect-ServiceFabricCluster' 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:2
+  Connect-ServiceFabricCluster
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Connect-ServiceFabricCluster:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

根据互联网上的其他文章,我尝试导入以下内容:

Import-Module "$ENV:ProgramW6432\Microsoft SDKs\Service Fabric\Tools\PSModule\ServiceFabricSDK\ServiceFabricSDK.psm1"

Import-Module "C:\Windows\System32\WindowsPowerShell\v1.0\Modules\ServiceFabric"

在导入模块之前,我还看到了尝试设置执行策略的地方,所以我尝试了这个:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force -Scope CurrentUser

在Powershell ISE的Modules部分中,我看到了ServiceFabricSDK模块,但是我没有看到这个cmdlet。

如何访问这些cmdlet?

感谢您的帮助。

当前版本:

运行$ PSVersionTable.PSVersion,我得到了

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1

Service Fabric SDK是版本2.5.216

5 个答案:

答案 0 :(得分:3)

您是否正在运行Powershell ISE的x86版本?我也遇到了这个错误但是当我切换到另一个ISE时,cmdlet又可用了。

答案 1 :(得分:0)

首先,我会将您的政策设定为绕过。这不能从脚本本身完成,因为,这就是需要使用此策略运行的内容。您可以考虑设置您的powershell ise配置文件来为您执行此操作。

Set-ExecutionPolicy Bypass

提出你的问题。并非所有模块都可以使用“导入 - 模块”功能。例如,有时必须手动安装和解压缩来自technet.microsoft.com网站的模块。我包括我在下面使用的脚本自动执行此操作。

    #https://www.petri.com/manage-windows-updates-with-powershell-module\
    $url = "https://gallery.technet.microsoft.com/scriptcenter/2d191bcd-3308-4edd-9de2-88dff796b0bc/file/41459/47/PSWindowsUpdate.zip"
    $module = "PSWindowsUpdate"
    $zipped = "$($PSScriptRoot)\$($module).zip"
    $unzipped = "C:\Windows\System32\WindowsPowerShell\v1.0\Modules"
    #$unzipped = "$PSScriptRoot\$($module)"

    if (Get-Module -Name $($module)) {
           Write-Host "Module exists $($module)"
        } else {
           Write-Host "Getting Module $($module)"

    if(!(Test-Path $zipped)){
        (New-Object System.Net.WebClient).DownloadFile($url, $zipped)
        if($?){Write-Output "Downloaded zip $($zipped)"}
    }else{
        Write-Output "Zip found $($zipped)"
    }

    if(!(test-path "$($unzipped)\$($module)")){
    Add-Type -assembly “system.io.compression.filesystem”
    [io.compression.zipfile]::ExtractToDirectory($zipped, $unzipped)
    if($?){Write-Output "Unzipped to $($unzipped)"}
}
    Unblock-File -Path "$($unzipped)\$($module)" -Confirm
    if($?){Write-Output "Unblocked file $($unzipped)"}

    Import-Module $unzipped\*\$($module).psd1 -Verbose
    if($?){Write-Output "Imported module $($unzipped)"}        
}

答案 2 :(得分:0)

我的第一个答案太仓促了。 (这很奇怪,因为它需要一段时间才能打字...)无论如何。看起来安装过程实际上为你解压缩了psm1。

  1. 请确保您以管理员身份运行,请使用此功能进行检查。

    ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity] :: GetCurrent())。IsInRole(` [Security.Principal.WindowsBuiltInRole]“管理员”)

  2. 确保您在步骤3中创建的文件名与步骤6中的路径匹配。

  3. 运行导入模块命令时,请使用$?进行操作。这将告诉您是否正确导入。您也可以使用这些命令查看它是否有效。

    get-command -name" Cluster &#34 ;;获得模块

答案 3 :(得分:0)

我刚刚在Win10框中遇到了同样的问题,

cmdlets未被识别为有效且下载/安装包含这些cmdlet的相关模块时无效。

对我有用的唯一解决方案如下:

  1. 转到“控制面板” - > “程序和功能”
  2. 卸载Service Fabric SDK
  3. 点击“打开或关闭Windows功能”链接并卸载PowerShell
  4. 接下来,重新启动Windows
  5. 返回控制面板 - > “程序和功能” - > “打开或关闭Windows功能”
  6. 并安装PowerShell
  7. 下载/安装Service Fabric SDK
  8. 之后

    再次重启PC,启动Service Fabric Cluster Manager(如果它不自动启动),然后右键单击任务栏上的图标,再次尝试创建1节点或5节点集群。就我而言,花了不到一分钟。

答案 4 :(得分:0)

您应该确保运行的是 Windows Powershell ,而不是Powershell。这对我来说有所不同。