Power Shell 简单脚本
Power Shell Simple Script
我是 Stack Over 流程的新手,不知道如何开始。
我的组织中有大约 1500 台 PC
我想要的是在 PowerShell 中编写一个简单的脚本,它将从文本文件中获取计算机列表作为输入,获取我的函数的信息并将信息保存到 CSV 文件中作为输出。
我正在尝试查找 RAM 模块容量
例如,如果您键入
WMIC /NODE:MachineName Memorychip get capacity
它会给你远程PC每个模块的容量大小;例如,我有一个系统,其中安装了 4 个 RAM 模块,每个 8 GB,因此输出将是
Capacity
8589934592
8589934592
8589934592
8589934592
表示4个插槽,每个插槽8GB
我想要的是使用这个简单的命令在命令行或 PowerShell(首选 PowerShell)中编写脚本。
更具体地说,这是我现在正在尝试的
$Result = @()
$servers = Get-Content "L:\Data.txt"
Foreach ($s in $servers) {
$Disk = (WMIC /NODE:$s MemoryChip Get Capacity)
$Object = New-Object -TypeName PSCustomObject -Property $Disk
}
$Result += $Object
}
$Result | Export-CSV "L:\RAMReport.csv" -NoTypeInformation -Encoding UTF8
希望我的问题能切题
非常感谢您的帮助
也许以下(部分注释)脚本可以导致所需的解决方案:
$servers = Get-Content "L:\Data.txt"
$Result = Foreach ($s in $servers) {
$Disk = (WMIC /NODE:"""$s""" MemoryChip Get Capacity) |
# ↑↑ ↑↑ remove if $s is already a quoted string
Where-Object {$_ -ne ''}
$Prop = @{
'server' = $s
"$($Disk[0].Trim())MB" = ($Disk |
Select-Object -Skip 1 |
ForEach-Object { [UInt64]$_ / 1Mb }) -join ' '
}
New-Object -TypeName PSCustomObject -Property $Prop
}
$Result # | Export-Csv "L:\RAMReport.csv" -NoTypeInformation -Encoding UTF8
# ↑ uncomment to export data to a CSV file
解释:
$Result += $Object
是 very expensive array operation,
wmic /node:"srv-12" MemoryChip Get /Value
如果包含一些字符(例如 Hyphen-Minus),则需要双引号服务器名称。
输出(不将数据导出到 CSV 文件)可能如下所示:
server CapacityMB
------ ----------
server1 8192 8192
server_2 8192 8192 8192 8192
server-3 8192
我是 Stack Over 流程的新手,不知道如何开始。 我的组织中有大约 1500 台 PC 我想要的是在 PowerShell 中编写一个简单的脚本,它将从文本文件中获取计算机列表作为输入,获取我的函数的信息并将信息保存到 CSV 文件中作为输出。
我正在尝试查找 RAM 模块容量 例如,如果您键入
WMIC /NODE:MachineName Memorychip get capacity
它会给你远程PC每个模块的容量大小;例如,我有一个系统,其中安装了 4 个 RAM 模块,每个 8 GB,因此输出将是
Capacity 8589934592 8589934592 8589934592 8589934592
表示4个插槽,每个插槽8GB
我想要的是使用这个简单的命令在命令行或 PowerShell(首选 PowerShell)中编写脚本。
更具体地说,这是我现在正在尝试的
$Result = @()
$servers = Get-Content "L:\Data.txt"
Foreach ($s in $servers) {
$Disk = (WMIC /NODE:$s MemoryChip Get Capacity)
$Object = New-Object -TypeName PSCustomObject -Property $Disk
}
$Result += $Object
}
$Result | Export-CSV "L:\RAMReport.csv" -NoTypeInformation -Encoding UTF8
希望我的问题能切题
非常感谢您的帮助
也许以下(部分注释)脚本可以导致所需的解决方案:
$servers = Get-Content "L:\Data.txt"
$Result = Foreach ($s in $servers) {
$Disk = (WMIC /NODE:"""$s""" MemoryChip Get Capacity) |
# ↑↑ ↑↑ remove if $s is already a quoted string
Where-Object {$_ -ne ''}
$Prop = @{
'server' = $s
"$($Disk[0].Trim())MB" = ($Disk |
Select-Object -Skip 1 |
ForEach-Object { [UInt64]$_ / 1Mb }) -join ' '
}
New-Object -TypeName PSCustomObject -Property $Prop
}
$Result # | Export-Csv "L:\RAMReport.csv" -NoTypeInformation -Encoding UTF8
# ↑ uncomment to export data to a CSV file
解释:
$Result += $Object
是 very expensive array operation,wmic /node:"srv-12" MemoryChip Get /Value
如果包含一些字符(例如 Hyphen-Minus),则需要双引号服务器名称。
输出(不将数据导出到 CSV 文件)可能如下所示:
server CapacityMB
------ ----------
server1 8192 8192
server_2 8192 8192 8192 8192
server-3 8192