我编写了以下脚本来列出特定应用程序的服务。它运行正常,但脚本中使用的命令除了实际值外还会写入一些不需要的输出。我需要去除这些不必要的值,并仅打印所需的数据。
$InfaPrm = Import-Csv 'D:\Tools\InfaRestart\infa_parm.csv'
ForEach ($Params in $InfaPrm){
$DOM = $Params.Domain
$AdmUser= $Params.User
$AdmPwd = $Params.Password
$Security=$Params.SecurityDomain
Set-Location -Path D:\Informatica\PowerCenter\isp\bin
Invoke-Command -ScriptBlock {& cmd.exe /c "infacmd.bat Listservices" -dn "$DOM" -un "$AdmUser" -sdn "$Security" -st "IS"}
}
输出:
INT_SVC_TEST
Command ran successfully.
INT_SVC_FIN_TEST
Command ran successfully.
INT_SVC_MAN_TEST
INT_SVC_HR_TEST
INT_SVC_EM_TEST
Command ran successfully.
我想删除字符串“命令成功运行”。从上面的输出中,仅打印服务名称。
答案 0 :(得分:0)
Invoke-Command
的结果存储在变量中,并抑制不需要的行的输出| Where-Object
附加到Invoke-Cmmand
$InfaPrm = Import-Csv 'D:\Tools\InfaRestart\infa_parm.csv'
Set-Location -Path D:\Informatica\PowerCenter\isp\bin
ForEach ($Params in $InfaPrm){
$DOM = $Params.Domain
$AdmUser= $Params.User
$AdmPwd = $Params.Password
$Security=$Params.SecurityDomain
$Output = Invoke-Command -ScriptBlock {& cmd.exe /c "infacmd.bat Listservices" -dn "$DOM" -un "$AdmUser" -sdn "$Security" -st "IS"}
$Output | Where-Object {$_ -ne 'Command ran successfully.'}
}
如果这不排除行,请尝试使用-notlike
和通配符,或者使用-notmatch
和正则表达式。