Batch file 批处理被动群集节点Win2012R2
我正在尝试构建一个批处理脚本,该脚本使用cluster实用程序定义变量1 首先,如果有一个完美的结果-如果列表中没有列出COMPUTERNAME,则设置变量1 问题是如果ERRORLEVEL=0。然后它应该找到以“WINSV”开头的字符串并排除%COMPUTERNAME%Batch file 批处理被动群集节点Win2012R2,batch-file,cluster-computing,findstr,Batch File,Cluster Computing,Findstr,我正在尝试构建一个批处理脚本,该脚本使用cluster实用程序定义变量1 首先,如果有一个完美的结果-如果列表中没有列出COMPUTERNAME,则设置变量1 问题是如果ERRORLEVEL=0。然后它应该找到以“WINSV”开头的字符串并排除%COMPUTERNAME% cluster node | findstr /r "WINSV*" | findstr /v "%COMPUTERNAME%" 返回以下内容: WINSV9999 1 Up “群集节点”命令返回:
cluster node | findstr /r "WINSV*" | findstr /v "%COMPUTERNAME%"
返回以下内容:
WINSV9999 1 Up
“群集节点”命令返回:
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"
)
您需要使用
FOR/F
命令将cluster
命令的输出捕获到变量中。然后您可以操作该变量。关于这个:for/F“tokens=1”%%I in('cluster node^ findstr/I/B“\”)是否设置了“VARIABLE1=%%I”
?请注意findstr/R“WINSV*”
是错误的:1。要匹配以WINSV
开头的字符串,请使用搜索字符串“WINSV.*”
(*
表示前面表达式的零个或多个实例*
,该表达式是任意字符
;您已定义了零个或多个V
)和2。/R
在管道中无效,因为没有指定路径…脚本正在工作(请参见编辑)。但是我需要重新建模,因为错误级别。有什么线索吗?非常感谢。
c:>cluster group
Listing status for all available resource groups:
Group Node Status
-------------------- --------------- ------
Available Storage WINSV9999 Offline
Cluster Group WINSV9999 Online
CLUSTERNAME WINSV9999 Online