批量被动群集节点Win2012R2

时间:2018-06-13 13:48:21

标签: batch-file cluster-computing findstr

我正在尝试构建一个批处理脚本,该脚本使用集群实用程序来定义VARIABLE1。

第一个IF有一个完美的结果 - 如果列表中没有列出COMPUTERNAME,则设置VARIABLE1。

问题是如果ERRORLEVEL = 0.那么它应该找到以“WINSV”开头的字符串并排除%COMPUTERNAME%

cluster node | findstr /r "WINSV*" | findstr /v "%COMPUTERNAME%" 

返回以下内容:

WINSV9999         1 Up

“cluster node”命令返回:

    Node           Node ID Status
-------------- ------- ---------------------
WINSV9999         1 Up
WINSV9998         2 Up

现在唯一缺少的是如何只将前8个字符打印到VARIABLE1变量中。 有什么线索在那里缺少什么?谢谢你的帮助。

    set CLUSTERGROUP=CLUSTERNAME
cluster group | find /I "%CLUSTERGROUP%" | find /I "%COMPUTERNAME%" 1>nul 2>&1
if %ERRORLEVEL% GTR 0 (
    set VARIABLE1=%COMPUTERNAME%
) 
else ( 
cluster node | findstr /r "WINSV*" | findstr /v "%COMPUTERNAME%" 
)

编辑: 现在正在使用这个:

set CLUSTERGROUP=CLUSTERNAME
call cluster group | find /I "%CLUSTERGROUP%" | find /I "%COMPUTERNAME%" 1>nul 2>&1
if %ERRORLEVEL% GTR 0 (
    set VARIABLE1=%COMPUTERNAME%
) else (
    for /F "tokens=1" %%I in ('call cluster node ^| findstr /r "WINSV*" ^| findstr /v "\<%COMPUTERNAME%\>"') do set "VARIABLE1=%%I"
)

现在另一个问题,因为我在其他脚本中有其他错误级别,第一行不起作用。如何重新编码 - 如果节点名称(以CLUSTERNAME开头的行中的值WINSV9999)与%COMPUTERNAME%不匹配,则输出到VARIABLE1应为%COMPUTERNAME%。对此有何帮助?谢谢!

c:>cluster group
Listing status for all available resource groups:

Group                Node            Status
-------------------- --------------- ------
Available Storage    WINSV9999    Offline
Cluster Group        WINSV9999    Online
CLUSTERNAME          WINSV9999    Online

0 个答案:

没有答案