Я пытаюсь просмотреть список серверов (в основном IIS 8.5) через l oop и посмотреть, существуют ли определенные имена настраиваемых полей для журналов. Я выполняю эти команды с моего локального компьютера, используя командлет "invoke-command". В настоящее время он просто возвращается к курсору, а не выписывает, если есть совпадение или нет совпадения.
Файл srv.csv содержит: - Host, IP - srv1,10.0.0.2 - Файл srv2,10.0.0.3
log_stig.csv содержит: - LogFieldName, SourceType - соединение, RequestHeader - пользователь-агент, RequestHeader - тип контента, ResponseHeader
Назначает значения в srv.csv переменной $ IISServers
try{
$IISServers = Import-Csv C:\Users\snappy\ps_script_resources\srv.csv
}
catch{
"The file 'srv.csv' is not available"
}
Назначает значения в log_stig.csv переменной $ STIG_CustomFields
try{
$STIG_CustomFields = Import-Csv C:\Users\snappy\ps_script_resources\log_stig.csv
}catch{
"The file 'log_stig.csv' is not available"
}
L oop через каждый сервер, а затем l oop через каждое имя настраиваемого поля, проверяя, существуют ли они на сервере.
ForEach($IISServer in $IISServers){
$IISServerName = $($IISServer.Host)
try{
invoke-command -ComputerName $IISServerName -ScriptBlock{
$SiteLogFileCustom = Get-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -
filter "system.applicationHost/sites/site/logFile/customFields" -Name 'Collection'
ForEach ($STIG_CustomField in $STIG_CustomFields){
write-output $STIG_CustomField.LogFieldName
write-output $SiteLogFileCustom.logFieldName
if($STIG_CustomField.LogFieldName -match $SiteLogFileCustom.logFieldName){
write-output "Match"
}
else{
write-output "No Match"
}
write-output "This ran"
}
}
}
catch{
"Invoke failed for "
}
}
Текущий код при запуске с локального компьютера возвращается только к курсору Я ожидаю, что для каждого совпадения я буду видеть сообщение «Совпадение» или «Нет совпадения» в моей консоли. Любые рекомендации приветствуются