繁体   English   中英

使用PowerShell脚本查询没有密码提示的远程Windows服务器

[英]PowerShell script to query remote Windows servers with no password prompt

如何编写PowerShell 4.0脚本以返回Windows 2003、2008和2012服务器的虚拟化与物理状态? 我想知道这些服务器是否是虚拟的。 我想在中央Windows服务器上运行脚本。 该脚本将与远程服务器交互。 我知道可以在单个服务器上运行的PowerShell命令。 但是我希望它一次检查许多远程服务器。 这是我针对一台服务器的基本(尚无法使用)脚本,但是它不起作用:

$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

最终查询将必须使用remove *和比较操作进行修改。 结果中的制造商将指出它是VMware,Hyper-V还是物理服务器(例如Dell)。 我不需要修改最终查询的帮助。 select *将在可以在远程服务器上运行的情况下起作用。

我真的很需要我所遇到的错误的帮助。 我已经编写了一个工作脚本,但是它要求用户手动输入密码。 我只需要帮助使脚本不交互式(并取消提示)。 我一直未能通过传递密码参数来解决交互式密码输入要求。

保存该密码的文件是否需要加密? 这可以在Windows Server 2003的远程服务器上使用吗? 我查看了在网上找到的其他脚本。 “ cat C:\\ password.txt”部分似乎不适用于我。 我尝试了convertTo-string和securestring选项。 两者也导致错误。

更好的方法是安全地存储凭据。 您将需要使用将运行脚本的同一用户来执行此操作(这意味着您可能必须以将运行脚本的serviceaccount身份登录到该服务器)。

无论如何,您可以从那里开始:

$cred = get-credential # Type in the greatserver credential
$cred | Export-Clixml -Path .\cred.xml

现在,您可以在脚本中通过运行以下命令来加载凭证

$cred = Import-Clixml -Path .\cred.xml

这是将凭据持久保存到磁盘的推荐方法。 显然,如果您要查询的每台服务器都需要一个唯一的凭据,那么这种方法就不能很好地工作-最好使用一个域帐户,该域帐户是所有服务器上的管理员(前提是您的服务器实际上已加入)域)。

从Technet Scrip t存储库中此脚本 ,它几乎可以准确地完成您需要做的事情。

确定计算机是否为虚拟计算机的关键是查询Win32_Bios和Win32_ComputerSystem类,以检查Bios.Serial和ComputerSystem.Model和Manufacturer。

该脚本的工作方式是获取这些查询的结果,然后检查“序列号”字段是否包含VMware,Xen,Microsoft或其他内容。

自行创建这样的工具需要进行大量工作,因为您需要研究诸如bios,制造商和模型等各个领域的期望,并使用脚本进行一些繁重的工作才能获得正确的答案; 我强烈建议您改用此功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM