我一直在使用SublimeText一段时间,直到最近还没有任何问题。如果我在sublime文本中编写PowerShell脚本,脚本将无法运行,如下所示:
Missing closing '}' in statement block or type definition.
At C:\Users\user\OneDrive\Scripts\~Projects\TRIS-AzureMigration\TRIS-AzureMigration.ps1:7 char:25
+ function Get-SQLInstall {
这些错误仅在我从PowerShell调用脚本时显示。如果我将脚本复制到控制台就可以了。如果我在ISE中运行它可行。我也可以运行它,如果我将代码复制到记事本,然后从那里保存为.ps1,这告诉我它与sublime文本有关。
我环顾四周,发现了一些例子:
My script runs in powershell ISE but not powershell console? ::解决方案是复制到一个新文件,我不想每次都这样做。
对此的任何帮助都将非常感激。
上述错误的代码代码块:
function Get-SQLInstall {
param ( [parameter(Mandatory=$false)]$GetMax = $true)
$instances = @();
$inst = (get-itemproperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances;
foreach ($i in $inst)
{
$p = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL').$i;
[version]$v = ((Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$p\Setup").Edition).Major;
$instances += New-Object –TypeName PSObject -Property @{
Edition = ((Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$p\Setup").Edition);
version = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$p\Setup").Version;
SQLPath = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$p\Setup").SqlPath;
SQLFullPath = ((Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$p\Setup").SqlPath) + "\" + [string]$v.major + "0";
}
}
if ($GetMax -eq $true) {
## Get latest SQL version
$max = ($instances | measure-object -Property version -maximum).maximum;
return @($instances | ? { $_.version -eq $max})[0];
}
else {
return $instances;
}
}