如何编写PowerShell 4.0脚本来返回Windows 2003,2008和2012服务器的虚拟化与物理状态?我想知道这些服务器是否是虚拟的。我想在中央Windows服务器上运行该脚本。该脚本将与远程服务器交互。我知道PowerShell命令可以在单个服务器上运行,它会告诉我。但我希望它一次检查许多远程服务器。这里是一个服务器我的基本(尚未加工)脚本,但它不工作:PowerShell脚本无需密码提示即可查询远程Windows服务器
$ComputerName = "greatServer"
$UserName = "greatServer\jdoe"
$Password = Get-Content C:\Users\jdoe\Documents\password.txt
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $UserName , $Password
Get-WmiObject -Query "select * from win32_computersystem"
这里是我的错误:
New-Object : Cannot find an overload for "PSCredential" and the argument count: "2".
At C:\Users\jdoe\Documents.pass.ps1:4 char:15 + $Credential = New-Object -TypeName System.Management.Automation.PSCredential -Ar ...+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo InvalidOperation: (:) [New-Object], MethodException + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
最后的查询将有通过删除*和比较操作进行修改。结果中的制造商会指出它是VMware,Hyper-V还是物理服务器(例如Dell)。我不需要修改最终查询的帮助。 select *将假定它可以在远程服务器上工作。
我真的很想帮助解决我遇到的错误。我写了一个工作脚本,但它需要用户手动输入密码。我只是想帮助使脚本非交互式(并禁止提示)。我通过传递密码参数来解决交互式密码输入要求失败。
保存该密码的文件是否需要加密?这可以在Windows Server 2003的远程服务器上工作吗?我回顾了我在网上找到的其他脚本。 “cat C:\ password.txt”部分似乎不适合我。我尝试了convertTo-string和securestring选项。这两个也造成了错误。
当我把这行写入脚本时, 'code' $ cred | Import-Clixml -Path。\ cred.xml'代码' 我得到一个错误。 (我把绝对完整的C:\ ... \ cred.xml路径放进去,但我认为这不是问题。)我得到“输入对象不能绑定到该命令的任何参数,因为命令不需要流水线输入,或者输入及其属性不匹配任何采用流水线输入的参数...“ 我对此解决方案感兴趣。我做错了什么? – Jennifer33 2015-02-09 20:23:49
抱歉,代码中出现错字。现在更新它。 – Trondh 2015-02-09 20:29:05