随笔 - 911  文章 - 5  评论 - 94  阅读 - 243万

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)

 

posted on   momingliu11  阅读(2913)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2013年3月 >
24 25 26 27 28 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6

点击右上角即可分享
微信分享提示