【发布时间】:2019-01-31 19:46:32
【问题描述】:
我正在尝试创建一个 powershell 脚本(越来越高级...JK。Powershell 提供了比批处理文件更多的功能,我想使用其中的一些。)
所以,这是我的批处理脚本:
:Start
@echo off
set /p password="Password:"
:Nextcomp
set /p computer="Computer name:"
wmic /user:username /password:%password% /node:"%computer%" memorychip get capacity
set /P c=Do you want to get info about another computer (y/n)?
if /I "%c%" EQU "y" goto :Nextcomp
if /I "%c%" EQU "n" goto :End goto :choice
pause
:End
这就是我发现的:Script 我根据自己的需要对其进行了修改,但每当我尝试运行此脚本时,我都会以错误的方式得到它 - 它向我显示了整个脚本,最后才询问我计算机名称:
$resultstxt = "C:\Users\user\Documents\results.csv"
Param(
[Parameter(Mandatory=$true, Position=0, HelpMessage="Password?")]
[SecureString]$password
)
$pw = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($password))
$Computer = Read-Host -Prompt 'Computer name'
$out = @()
If (!(Test-Connection -ComputerName $Computer -Count 1 -Quiet)) {
Write-Host "$Computer not on network."
Continue
}
foreach($object in $HostList) {
$RAM = get-wmiobject -user user -password $pw -computername $object.("Computer")-class win32_physicalmemory
$DeviceInfo= @{}
$DeviceInfo.add("RAM", "$([math]::floor($RAM.Capacity/ (1024 * 1024 * 1024 )) )" + " GB" )
$DeviceInfo.add("Computer Name", $vol.SystemName)
$out += New-Object PSObject -Property $DeviceInfo | Select-Object "RAM"
Write-Verbose ($out | Out-String) -Verbose
$out | Export-CSV -FilePath $resultstxt -NoTypeInformation
}
正如你可能已经猜到的,我有更多的字段,但它们都是相似的,我从很多来源借来的,但主要是从“脚本”链接。
我想要的是:
- 隐藏密码
- 将信息导出到 CSV,每台新计算机(参见 3.)都添加到当前计算机之后(在下一行)
- 询问我是否要获取有关另一台计算机的信息,“y”键表示是,“n”表示否。
- 使脚本工作
我发现了问题1,但我还没有测试过,所以……它会工作吗?接下来,我发现了问题 2,但它会以一种不易阅读的格式显示所有信息,而不是我需要的所有信息,并且都在一个单元格中。最后,大约3,我找到了,但它不起作用。我不能说我挖遍了整个互联网,但我希望你们(和女孩?)能帮我弄清楚。解决这三个问题应该不难,毕竟不是超级复杂的脚本吧?我当前的脚本只有 31 行,包括空格。
【问题讨论】:
-
您的设置是否需要密码或用户名?在大多数网络上,您只需运行 CIM/WMI cmdlet,它将使用当前帐户信息访问系统。
-
如果您不打算使用参数调用此脚本,请省略 start param 块。
$HostList在哪里定义?如果您不想在每次执行中显示整个脚本,请至少保存一次。 -
我尝试在没有密码的情况下运行,但它不起作用:+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
标签: powershell export-to-csv export-to-excel