2016-04-18 3 views
0

リモートコンピュータにある特定のIISサイトに対して、WMIを使用してLogFile.Directoryの値を取得できました。 今、LogFile.Directoryプロパティを変更する必要があります。これは自動化プロセスの一歩ですが、壁に当たっています。これは私がこれまで行ってきたことですが、うまくいきません。リモートコンピュータのWMI経由でLogFile.Directoryプロパティを変更する方法はありますか?

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

はかなり工夫した後、私は最終的にリモートでIISサイトのLogFile.Directoryを変更する方法を見つけました:

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) 
    } 
関連する問題