powershell - 远程磁盘信息唯一描述
powershell - remote disk information unique description
在创建以下脚本时需要一些帮助,我可以为我指定的所有远程机器创建磁盘 space 的 HTML 报告;但是我如何为每个主机添加有意义的描述,即下面的图片。
下面的脚本
$Machine = @("Fakehost1", "Fakehost2", "fakehost3")
Get-CimInstance Win32_LogicalDisk -ComputerName $Machine -Filter "DriveType = '3'" -ErrorAction SilentlyContinue |
Select-Object PsComputerName, DeviceID,
@{N="Disk Size (GB) "; e={[math]::Round($($_.Size) / 1073741824,0)}},
@{N="Free Space (GB)"; e={[math]::Round($($_.FreeSpace) / 1073741824,0)}},
@{N="Free Space (%)"; e={[math]::Round($($_.FreeSpace) / $_.Size * 100,1)}} |
Sort-Object -Property 'Free Space (%)' |
ConvertTo-Html -Head $Head -Title "$Title" -PreContent "<p><font size=`"6`">$Title</font><p>Generated on $date</font></p>" > $HTML
一个快速修复方法是在同一 Select-Object
命令中搜索 PSComputerName 对象。您已经在计算大量属性,还有 1 个...
Get-CimInstance Win32_LogicalDisk -ComputerName $Machine -Filter "DriveType = '3'" -ErrorAction SilentlyContinue |
Select-Object @{N = 'PSComputerName'; E = { $_.PSComputerName + " : Description" }},
DeviceID,
@{N="Disk Size (GB) ";e={[math]::Round($($_.Size) / 1073741824,0)}},
@{N="Free Space (GB)";e={[math]::Round($($_.FreeSpace) / 1073741824,0)}},
@{N="Free Space (%)";e={[math]::Round($($_.FreeSpace) / $_.Size * 100,1)}} |
Sort-Object -Property 'Free Space (%)' |
ConvertTo-Html -Head $Head -Title "$Title" -PreContent "<p><font size=`"6`">$Title</font><p>Generated on $date</font></p>" > $HTML
这在我的环境中测试良好,但您必须决定如何或实际描述应该是什么...如果您在 AD 环境中,也许您可以创建一个散列来保存描述,例如:
$Descriptions = @{}
$Machine |
Get-ADComputer -Properties Description |
ForEach-Object{ $Descriptions.Add( $_.Name, $_.Description ) }
然后将 PSComputerName 表达式更改为:
@{N = 'PSComputerName'; E = { $_.PSComputerName + $Descriptions[$_.PSComputerName] }}
这将引用散列和 return 您从 AD 描述属性中获得的值。当然,这意味着必须填充该属性。但这只是证明必须从某处挖掘描述这一点的 1 个想法。
更新:
要回答您的评论,您可以手动指定哈希值。在 Get-CimInstance
命令之前使用类似下面的内容。确保删除以前的广告内容...
$Descriptions =
@{
Fakehost1 = "SQL Server for some bug app..."
Fakehost2 = "File Server 1"
Fakehost3 = "Another file server"
}
在创建以下脚本时需要一些帮助,我可以为我指定的所有远程机器创建磁盘 space 的 HTML 报告;但是我如何为每个主机添加有意义的描述,即下面的图片。
下面的脚本
$Machine = @("Fakehost1", "Fakehost2", "fakehost3")
Get-CimInstance Win32_LogicalDisk -ComputerName $Machine -Filter "DriveType = '3'" -ErrorAction SilentlyContinue |
Select-Object PsComputerName, DeviceID,
@{N="Disk Size (GB) "; e={[math]::Round($($_.Size) / 1073741824,0)}},
@{N="Free Space (GB)"; e={[math]::Round($($_.FreeSpace) / 1073741824,0)}},
@{N="Free Space (%)"; e={[math]::Round($($_.FreeSpace) / $_.Size * 100,1)}} |
Sort-Object -Property 'Free Space (%)' |
ConvertTo-Html -Head $Head -Title "$Title" -PreContent "<p><font size=`"6`">$Title</font><p>Generated on $date</font></p>" > $HTML
一个快速修复方法是在同一 Select-Object
命令中搜索 PSComputerName 对象。您已经在计算大量属性,还有 1 个...
Get-CimInstance Win32_LogicalDisk -ComputerName $Machine -Filter "DriveType = '3'" -ErrorAction SilentlyContinue |
Select-Object @{N = 'PSComputerName'; E = { $_.PSComputerName + " : Description" }},
DeviceID,
@{N="Disk Size (GB) ";e={[math]::Round($($_.Size) / 1073741824,0)}},
@{N="Free Space (GB)";e={[math]::Round($($_.FreeSpace) / 1073741824,0)}},
@{N="Free Space (%)";e={[math]::Round($($_.FreeSpace) / $_.Size * 100,1)}} |
Sort-Object -Property 'Free Space (%)' |
ConvertTo-Html -Head $Head -Title "$Title" -PreContent "<p><font size=`"6`">$Title</font><p>Generated on $date</font></p>" > $HTML
这在我的环境中测试良好,但您必须决定如何或实际描述应该是什么...如果您在 AD 环境中,也许您可以创建一个散列来保存描述,例如:
$Descriptions = @{}
$Machine |
Get-ADComputer -Properties Description |
ForEach-Object{ $Descriptions.Add( $_.Name, $_.Description ) }
然后将 PSComputerName 表达式更改为:
@{N = 'PSComputerName'; E = { $_.PSComputerName + $Descriptions[$_.PSComputerName] }}
这将引用散列和 return 您从 AD 描述属性中获得的值。当然,这意味着必须填充该属性。但这只是证明必须从某处挖掘描述这一点的 1 个想法。
更新:
要回答您的评论,您可以手动指定哈希值。在 Get-CimInstance
命令之前使用类似下面的内容。确保删除以前的广告内容...
$Descriptions =
@{
Fakehost1 = "SQL Server for some bug app..."
Fakehost2 = "File Server 1"
Fakehost3 = "Another file server"
}