【问题标题】:How will I save my credentials every loop in Powershell如何在 Powershell 中的每个循环中保存我的凭据
【发布时间】:2017-03-10 23:57:11
【问题描述】:

有没有办法保存我的凭据,这样它就不会一直询问每个循环?就像,将它隔离在 foreach 循环之外。我尝试删除 -credentials 并将其添加到外部,但它给了我未经授权访问的错误。我似乎无法弄清楚。抱歉,如果这个问题看起来很愚蠢,我是 Powershell 的新手。

Import-Module ActiveDirectory

$ServerList = Get-Content "C:\servers.txt"

foreach($ServerName in $ServerList){

"$ServerName"
"=========="
Get-WmiObject -Class Win32_UserAccount -Computer $ServerName -Filter "LocalAccount='True'" -credential CORPORATE\usmenm03adm| Select Name

" "

}

【问题讨论】:

    标签: windows powershell server credentials


    【解决方案1】:

    是的,使用Get-Credential 读取一次凭据并存储在变量中:

    Import-Module ActiveDirectory
    
    $ServerList = Get-Content "C:\servers.txt"
    $MyCredential = Get-Credential -UserName "CORPORATE\usmenm03adm" -Message "Enter WMI credentials"
    
    foreach ($ServerName in $ServerList) {
    
        "$ServerName"
        "=========="
        Get-WmiObject -Class Win32_UserAccount -Computer $ServerName -Filter "LocalAccount='True'" -Credential $MyCredential | Select-Object Name
    
        " "
    }
    

    【讨论】:

    • 1 分钟后对这个答案投反对票并在 相似 答案上投赞成票!?我已经把它们拉平了。让社区决定哪个最有帮助。
    • 我希望这个社区的目标是分享知识并帮助其他成员!接下来是投票
    • @Venkatakrishnan - 它是而且应该是,但它很奇怪。也许有人只是不喜欢 TesselatingHeckler 的答案,而更喜欢你的答案,但这不应该导致投反对票。
    • 嗨,我测试了两个答案,似乎这个答案仍然循环我的凭据。不过还是谢谢:)
    • @KentMarionVG - 除了命名变量,两个答案都相同?!我很好奇为什么这对你不起作用?!
    【解决方案2】:

    您可以在循环之外定义凭据。 我编辑了您的脚本,如下所示

    Import-Module ActiveDirectory
    
    $ServerList = Get-Content "C:\servers.txt"
    
    $cred=Get-Credential
    
    foreach($ServerName in $ServerList){
    
    "$ServerName"
    "=========="
    Get-WmiObject -Class Win32_UserAccount -Computer $ServerName -Filter "LocalAccount='True'" -credential $cred | Select Name
    
    " "
    }
    

    【讨论】:

      猜你喜欢
      • 2022-07-06
      • 1970-01-01
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多