我试图关注有关通过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
答案 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。
请确保您以管理员身份运行,请使用此功能进行检查。
([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity] :: GetCurrent())。IsInRole(` [Security.Principal.WindowsBuiltInRole]“管理员”)
确保您在步骤3中创建的文件名与步骤6中的路径匹配。
运行导入模块命令时,请使用$?进行操作。这将告诉您是否正确导入。您也可以使用这些命令查看它是否有效。
get-command -name" Cluster &#34 ;;获得模块
答案 3 :(得分:0)
我刚刚在Win10
框中遇到了同样的问题,
当cmdlets
未被识别为有效且下载/安装包含这些cmdlet的相关模块时无效。
对我有用的唯一解决方案如下:
再次重启PC,启动Service Fabric Cluster Manager(如果它不自动启动),然后右键单击任务栏上的图标,再次尝试创建1节点或5节点集群。就我而言,花了不到一分钟。
答案 4 :(得分:0)
您应该确保运行的是 Windows Powershell ,而不是Powershell。这对我来说有所不同。