如何在远程计算机上通过 WMI 更改 LogFile.Directory 属性?
How to change LogFile.Directory property via WMI on a remote computer?
我能够使用 WMI 检索位于远程计算机上的特定 IIS 站点的 LogFile.Directory
值。
现在我需要更改 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()
}
我没有收到任何错误。当我签入 IIS 管理器时,远程计算机上的 LogFile.Directory
值并没有改变。
我读过我应该使用 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) {
+ ~
有没有办法远程更改此特定值,或者它是只读的 属性?
任何帮助将不胜感激。
谢谢,
// 弗朗切斯科
经过多次修改,我终于找到了远程更改 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)
}
我能够使用 WMI 检索位于远程计算机上的特定 IIS 站点的 LogFile.Directory
值。
现在我需要更改 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()
}
我没有收到任何错误。当我签入 IIS 管理器时,远程计算机上的 LogFile.Directory
值并没有改变。
我读过我应该使用 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) {
+ ~
有没有办法远程更改此特定值,或者它是只读的 属性? 任何帮助将不胜感激。 谢谢,
// 弗朗切斯科
经过多次修改,我终于找到了远程更改 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)
}