2016-04-18 6 views
0

Ich konnte mithilfe von WMI den Wert LogFile.Directory für eine bestimmte IIS-Site abrufen, die sich auf einem Remotecomputer befindet. Jetzt muss ich die LogFile.Directory Eigenschaft ändern - das ist ein Schritt in einem Automatisierungsprozess - aber ich treffe eine Wand. Das habe ich bisher, obwohl es nicht funktioniert.Wie Ändern der LogFile.Directory-Eigenschaft über WMI auf einem Remotecomputer?

Write-Output "Making IIS connection to $($XmlCloudNodeFullyQualifiedDomainName)" 
    $site = Get-WmiObject -ComputerName $XmlCloudNodeFullyQualifiedDomainName -Namespace "root/webadministration" -Class Site -Authentication 6 -Filter "Name = '$IISSiteName'" 
    If ($site.Name -eq $IISSiteName) { 
     Write-Output "Found site $IISSiteName" 
     Write-Output ("Existing log folder: " + $site.LogFile.Directory) 
     $newLogFolder = "E:\" + $IISSiteName + "\logs" 
     Write-Output ("Set IIS log folder to " + $newLogFolder) 
     $site.LogFile.Directory = $newLogFolder 
     $site.Put() 
    } 

Ich bekomme keine Fehler. Der Wert LogFile.Directory ändert sich nicht auf dem Remotecomputer, wenn ich den IIS-Manager einchecke. Ich habe gelesen, dass ich Set-WMIInstance stattdessen verwenden soll, also habe ich versucht:

Write-Verbose "Making IIS connection to $($XmlCloudNodeFullyQualifiedDomainName)" 
    $site = Get-WmiObject -ComputerName $XmlCloudNodeFullyQualifiedDomainName -Namespace "root/webadministration" -Class Site -Authentication 6 -Filter "Name = '$IISSiteName'" 
    $sitePath = (Get-WmiObject -ComputerName $XmlCloudNodeFullyQualifiedDomainName -Namespace "root/webadministration" -Class Site -Authentication 6 -Filter "Name = '$IISSiteName'").__path 
    If ($site.Name -eq $IISSiteName) { 
     Write-Output "Found site $IISSiteName" 
     $newLogFolder = "E:\" + $IISSiteName + "\logs" 
     Write-Output ("Existing log folder: " + $site.LogFile.Directory) 
     Set-WmiInstance -Path $sitePath -argument @{LogFile.Directory = $newLogFolder} 
     Write-Output ("Set IIS log folder to " + $newLogFolder) 
    } 

Aber das wirft Fehler:

At E:\\Test.ps1:71 char:54 
+    Set-WmiInstance -Path $sitePath @{LogFile.Directory = $newLogFolder} 
+              ~ 
Missing '=' operator after key in hash literal. 
At E:\\Test.ps1:72 char:18 
+    Write-Output ("Set IIS log folder to " + $newLogFolder) 
+     ~ 
Missing '=' operator after key in hash literal. 
At E:\\Test.ps1:41 char:54 
+  foreach ($FSMappingNode in $FSMappingNodesArray) { 
+              ~ 

Gibt es eine Möglichkeit diesen besonderen Wert der Ferne zu ändern, oder ist es ein schreibgeschützte Eigenschaft? Jede Hilfe würde sehr geschätzt werden. Danke,

// Franc

Antwort

0

Nach langem Tüfteln fand ich endlich die Möglichkeit, die LogFile.Directory einer IIS-Website remote zu ändern:

Write-Output "Making IIS connection to $($XmlCloudNodeFullyQualifiedDomainName)" 
    $site = Get-WmiObject -ComputerName $XmlCloudNodeFullyQualifiedDomainName -Namespace "root/webadministration" -Class Site -Authentication 6 -Filter "Name = '$IISSiteName'" 
    $sitePath = $site.__path 
    Write-Verbose $sitePath 
    If ($site.Name -eq $IISSiteName) { 
     Write-Output "Found site $IISSiteName" 
     Write-Verbose ("Existing log folder: " + $site.LogFile.Directory) 
     $newLogFolder = "E:\" + $IISSiteName + "\logs" 
     $siteLogFile = $site.LogFile 
     $siteLogFile.Directory = $newLogFolder 
     Set-WmiInstance -Path $sitePath -Arguments @{LogFile = $siteLogFile} 
     Write-Output ("Set IIS log folder to " + $siteLogFile.Directory) 
    } 
Verwandte Themen