PowerShell脚本保存密码
当使用批处理或VBS脚本访问远程计算机的时候,我们可以直接将其用户名和密码写入到脚本中,但是在PowerShell中,则不允许直接将密码写入其中,这虽然在很大程度上提高了脚本的安全性,但有时候却也给我带来了一些麻烦。
如果我们要获取计算机(192.168.12.6)的系统信息,则需要使用Get-Credential命令来提供凭据(用户名+密码),可以先将凭据保存到一个变量中,如
$a = get-credential
回车后则弹出窗口要求输入用户名和密码,输入完成后,则会保存在变量$a中,然后在通过如下命令进行调用
Get-WmiObject Win32_OperatingSystem -Credential $a -Computer 192.168.12.6
如果只是一台计算机还好,如果有多台计算机,并且其用户名和密码都不相同,则需要输入N遍,带来很大的麻烦。为了解决这个问题,我们可以通过新建对象的方法来保存用户名和密码,将其写入到脚本中。
下面先来看看$a对象的类型及其相应的属性,可以得知对象类型名称为:System.Management.Automation.PSCredential,其中的Password和UserName都是其属性,所以可以新建一个该类型的对象。在此处需要注意的是Password类型为SecureString,UserName类型为String,所以需要将明文的Password转换为安全字符串,可以使用ConvertTo-SecureString命令。
详细代码如下:
1 $UserName = "administrator" 2 #将纯文本字符串“boc.123”转换为安全字符串,并将结果存储在 $Password变量中 3 $Password = ConvertTo-SecureString "boc.123" -AsPlainText –Force 4 #新建对象 5 $cred = New-Object System.Management.Automation.PSCredential($UserName,$Password) 6 Get-WmiObject Win32_OperatingSystem -Credential $cred -Computer 192.168.12.6
方法二:
1 $sec = New-Object System.Security.SecureString 2 $user = "administrator" 3 $pw="password" 4 foreach($item in ($pw.GetEnumerator())) 5 { $sec.AppendChar($item) } 6 $Cred = New-Object System.Management.Automation.PSCredential ($user,$sec)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?