powershell-远程磁盘信息唯一说明

powershell-远程磁盘信息唯一说明,powershell,diskspace,Powershell,Diskspace,需要以下创建的脚本的帮助,我可以为我指定的所有远程机器创建磁盘空间的HTML报告;但是,我如何为每个主机添加有意义的描述,即下面的图片 下面的脚本 $Machine = @("Fakehost1", "Fakehost2", "fakehost3") Get-CimInstance Win32_LogicalDisk -ComputerName $Machine -Filter "DriveType = '3'"

需要以下创建的脚本的帮助,我可以为我指定的所有远程机器创建磁盘空间的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
$Machine=@(“Fakehost1”、“Fakehost2”、“fakehost3”)
获取CimInstance Win32_LogicalDisk-ComputerName$Machine-Filter“DriveType='3'”-ErrorAction SilentlyContinue|
选择对象PsComputerName、设备ID、,
@{N=“磁盘大小(GB)”;e={[math]::Round($($.Size)/1073741824,0)},
@{N=“自由空间(GB)”;e={[math]::Round($($.FreeSpace)/1073741824,0)},
@{N=“自由空间(%);e={[math]::Round($($.FreeSpace)/$.Size*100,1)}}
排序对象-属性“可用空间(%)”|
转换为Html-Head$Head-Title“$Title”-预内容“$Title在$date生成

一个快速解决方法是在相同的
选择对象
命令中生成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
然后更改PSComputerName表达式,如下所示:

@{N = 'PSComputerName'; E = { $_.PSComputerName + $Descriptions[$_.PSComputerName] }}
这将引用散列并返回从AD description属性获得的值。当然,这意味着必须填充属性。但这仅仅是一个想法来证明这一点,即描述必须从某个地方挖掘出来

更新:

要回答您的评论,您可以手动指定哈希值。在执行
getcimdinstance
命令之前,请使用以下命令。确保删除以前的广告内容

$Descriptions = 
@{
    Fakehost1 = "SQL Server for some bug app..."
    Fakehost2 = "File Server 1"
    Fakehost3 = "Another file server"
}

谢谢大家,,不幸的是,我没有访问该广告的权限。如何将描述添加到列表中,以便当脚本提取空间信息时,它将检查列表并提取我为该主机编写的特定描述,即ED001-SP01=Web Server ED001-SDB01=SQL Server for specific Applications。这是一个示例,该概念可用于手动定义的哈希。作为一个设计首选项,我可能会通过创建一个自定义对象集合而不是使用简单的字符串数组来改变这一点,但上面的内容应该可以工作。谢谢,我这样做了,但一直给我错误:在哈希文本中的键后缺少“=”运算符,哈希文本不完整。我已经用以下代码替换了代码:$Descriptions={Fakehost1=“Web服务器01”,Fakehost1=“Web服务器02”}选择对象{N='PSComputerName';E={$\ PSComputerName+”:“$Descriptions}},对不起,我以为我已经发布了一条修改过的评论。我修改了答案以包含格式正确的代码。它应该会起作用。请回复。谢谢,我添加了更新评论,但仍然收到错误。我已经将我运行的更新代码放在了我的原始帖子上,并更正了错误。非常感谢你的帮助。
$Descriptions = 
@{
    Fakehost1 = "SQL Server for some bug app..."
    Fakehost2 = "File Server 1"
    Fakehost3 = "Another file server"
}