2016-04-18 4 views
0

Мне удалось получить, используя WMI, значение LogFile.Directory для конкретного сайта IIS, расположенного на удаленном компьютере. Теперь мне нужно изменить свойство LogFile.Directory - это шаг в процессе автоматизации, но я ударяю о стену. Это то, что я до сих пор, хотя это не работает.Как изменить свойство LogFile.Directory через WMI на удаленном компьютере?

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() 
    } 

У меня нет ошибок. Просто значение LogFile.Directory не изменяется на удаленном компьютере при проверке в диспетчере IIS. Я читал, что я должен использовать Set-WMIInstance вместо этого, так что я пробовал:

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) 
    } 

Но это бросает ошибку:

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) { 
+              ~ 

Есть ли способ, чтобы изменить это конкретное значение удалено или это свойство только для чтения? Любая помощь будет принята с благодарностью. Спасибо,

// Франческо

ответ

0

После долгих мастерить, я, наконец, нашел способ изменить LogFile.Directory в качестве сайта IIS удаленно:

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) 
    }