小编Sim*_*onS的帖子

SQL ExecuteReader 抛出“GO 附近的语法不正确”

我使用我在这里找到的 T-SQL 命令来获取我的数据库表的碎片。当我在 Management Studio 中执行 T-SQL 时,一切正常。如果我在 PowerShell 中使用它,我会收到以下错误(从德语翻译):

使用 0 个参数调用“ExecuteReader”时出现异常: 
“'GO' 附近的语法不正确。
'GO' 附近的语法不正确。”
在 Zeile:17 Zeichen:6
+ $Result = $cmd.ExecuteReader()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    + FullQualifiedErrorId : SqlException

这是我的脚本中引发错误的部分

foreach ($table in $tables)
{
     $Data = New-Object System.Data.DataTable
     $cmd = New-Object System.Data.SqlClient.SqlCommand
     $getFragRate = "
     -- SQL Command von Microsoft um die Index Fragmentation zu überprüfen 
     USE Logik;  
     GO  
     SELECT a.index_id, name, avg_fragmentation_in_percent  
     FROM sys.dm_db_index_physical_stats (DB_ID(N'Logik'), OBJECT_ID(N'$($table)'), NULL, NULL, …
Run Code Online (Sandbox Code Playgroud)

sql-server powershell

3
推荐指数
1
解决办法
989
查看次数

我可以在PowerShell脚本中禁用选择模式吗?

PowerShell的默认设置是,当您在PowerShell控制台中单击时,PowerShell进入“选择模式”并暂停脚本,直到您敲空格,进入或转义。

我有一个带有无限循环的脚本,该脚本while ($true) {}应始终运行,当有人不小心单击PowerShell窗口时,如何告诉PowerShell不要停止脚本?

powershell

3
推荐指数
1
解决办法
1441
查看次数

使用Invoke-Command时,Try&Catch无法正常工作

我的脚本中有一个奇怪的问题.我正在某些服务器上调用命令.如果我无法连接到服务器(因为它是脱机的或其他东西)我仍然想记录(服务器脱机> log.txt)

显然,当Try块中发生错误时,Catch不执行该块.

为了测试这个,我给ComputerName不存在的参数写了一个值.这是我的代码:

Try {
    Invoke-Command -ComputerName hui -ScriptBlock $sb
}
Catch {
    Write-Host "Hello"
}
Run Code Online (Sandbox Code Playgroud)

但是脚本从未发出"你好"

我得到的例外是PSRemotingTransportException.我也试着指定异常,也没用

当我在该Invoke-Command行设置断点时,它也会忽略catch块.为什么?

powershell try-catch

2
推荐指数
1
解决办法
3258
查看次数

电脑上网最快的方法是什么

我正在编写一个返回网络中所有在线计算机的函数,因此我可以执行以下操作:

Get-OnlineComputers | % { get-process -computername $_ }
Run Code Online (Sandbox Code Playgroud)

现在我基本上已经准备好了我的功能,但是花费的时间太长了。我只想返回启用 WinRM 的计算机,但我还想提供选项来获取每台计算机,甚至是那些尚未设置 WinRM 的计算机(切换参数)。

这是我的职责。首先,它创建一个到域控制器的会话,以获取 LAN 中的所有计算机。然后对于每台计算机,它将测试它们是否激活了 WinRM 或者是否接受 ping。如果是这样,它就会被退回。

$session = New-PSSession Domaincontroller
$computers = Invoke-Command -Session $session { Get-ADComputer -filter * } | select -ExpandProperty Name

$computers | % {
    if ($IncludeNoWinRM.IsPresent) 
    {
        $ErrorActionPreference = "SilentlyContinue"
        $ping = Test-NetConnection $_ 
        if ($ping.PingSucceeded -eq 'True') 
        {
            $_
        }       
    }
    else
    {
        $ErrorActionPreference = "SilentlyContinue"
        $WinRM = Test-WSMan $_
        if ($WinRM)
        {
            $_
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我检查在线计算机的最佳方式吗?有人有更快更好的想法吗?

谢谢!

powershell

1
推荐指数
1
解决办法
5293
查看次数

如何在while循环中监视两个进程时知道哪个进程死了

我正在监视服务器上的两个进程.当其中一个人去世时,我需要知道它是哪一个.

有没有比我到目前为止检查这个更好的方法?有没有办法做到这一点没有if/elseif我到目前为止?

while ((ps proc1 -ov websrv).Responding -and (ps proc2 -ov connec).Responding) 
{ sleep -m 100 }

$pmsname = if (!$websrv.Responding -and !$connec.Responding) { "beide" }
            elseif (!$websrv.Responding -and $connec.Responding) { "websrv" }
            elseif ($websrv.Responding -and !$connec.Responding) { "connec" }
Run Code Online (Sandbox Code Playgroud)

powershell

1
推荐指数
1
解决办法
46
查看次数

标签 统计

powershell ×5

sql-server ×1

try-catch ×1