2
win32 :: ole 모듈과 WMI 쿼리를 사용하여 원격 Windows 컴퓨터에서 이벤트 로그 정보를 가져올 스크립트를 작성하려고합니다. 컴퓨터를 ping 할 수는 있지만 ConnectServer() 메서드를 사용하여 WMI 연결이 항상 실패하더라도 상관 없습니다. 나는 방화벽 관련 문제가 아니라고 확신한다. 내 코드는 다음과 같습니다.WMI와 Perl을 사용하여 원격 컴퓨터에 연결할 수 없습니다.
use Win32::OLE qw(in);
use Net::Ping;
use constant wbemFlagReturnImmediately => 0x10;
use constant wbemFlagForwardOnly => 0x20;
my $computer = "10.10.10.15";
my $user = "Administrator";
my $pwd = "pass";
$p = Net::Ping->new();
print "$computer is alive.\n" if $p->ping($host);
$p->close();
my $locatorObj =Win32::OLE->new("WbemScripting.SWbemLocator") or die "ERROR CREATING OBJ";
$locatorObj->{Security_}->{impersonationlevel} = 3;
my $objWMIService = $locatorObj->ConnectServer($computer, "root\civm2", $user, $pwd) or die "WMI connection failed.\n";
my $colItems = $objWMIService->ExecQuery("SELECT * FROM Win32_NTLogEvent", "WQL",
wbemFlagReturnImmediately | wbemFlagForwardOnly);
foreach my $objItem (in $colItems) {
print "Category: $objItem->{Category}\n";
print "CategoryString: $objItem->{CategoryString}\n";
print "ComputerName: $objItem->{ComputerName}\n";
print "Data: " . join(",", (in $objItem->{Data})) . "\n";
print "EventCode: $objItem->{EventCode}\n";
print "EventIdentifier: $objItem->{EventIdentifier}\n";
print "EventType: $objItem->{EventType}\n";
print "InsertionStrings: " . join(",", (in $objItem->{InsertionStrings})) . "\n";
print "Logfile: $objItem->{Logfile}\n";
print "Message: $objItem->{Message}\n";
print "RecordNumber: $objItem->{RecordNumber}\n";
print "SourceName: $objItem->{SourceName}\n";
print "TimeGenerated: $objItem->{TimeGenerated}\n";
print "TimeWritten: $objItem->{TimeWritten}\n";
print "Type: $objItem->{Type}\n";
print "User: $objItem->{User}\n";
print "\n";
}
연결 시도가 항상 실패하는 이유는 무엇입니까? 감사합니다 :)
아 풍어 civm2-> CIMV2에 있습니다. 나는이 변화를 만들려고 노력했지만 여전히 그 변화는 없다. 나는 cimv2 철자가 잘못된 채로 이것을 얼마나 오랫동안 사용해 왔는지 궁금합니다 ... 이것은 원격 컴퓨터에서 실행되는 WMI 스크립트의 첫 번째 시도입니다. 나는 옳은 길을 걷고있는 것처럼 보입니까? – MilqueToasted
나는이 두 가지 변화를 만들어 내 자신의 PC에 맞춰서 작동시킬 수있었습니다. 방금 네트워크의 다른 컴퓨터에 대해 시도했지만 실패했습니다. 그러나이 경우 방화벽 문제를 의심하고 있으므로 더 이상 조사하지 않았습니다. 'my $ user = "somedomain \\ username"; ' –
컴퓨터와의 통신을 시도했기 때문에 내 문제가 방화벽과 관련이 없다는 것을 확신합니다. 방화벽이 없습니다 ... 컴퓨터가 작업 그룹에 속하는지 도메인에 있는지에 대해 궁금합니다. 내가 그걸 가지고 계속 놀아 올거야. – MilqueToasted