all*_*me 141 powershell powershell-remoting
我想重新启动属于域的远程计算机.我有一个管理员帐户,但我不知道如何从powershell使用它.
我知道有一个Restart-Computercmdlet,我可以通过凭据但是如果我的域名是,例如mydomain,我的用户名是myuser,我的密码是mypassword使用它的正确语法?
我需要安排重启,所以我不必输入密码.
Kev*_*Kev 200
问题Get-Credential是它总是会提示输入密码.然而,有一种解决方法,但它涉及将密码存储为文件系统上的安全字符串.
以下文章解释了这是如何工作的:
总之,您创建一个文件来存储您的密码(作为加密字符串).以下行将提示输入密码,然后将其c:\mysecurestring.txt作为加密字符串存储.你只需要这样做一次:
read-host -assecurestring | convertfrom-securestring | out-file C:\mysecurestring.txt
Run Code Online (Sandbox Code Playgroud)
无论您-Credential在PowerShell命令中看到哪个参数,都意味着您可以传递一个PSCredential.所以在你的情况下:
$username = "domain01\admin01"
$password = Get-Content 'C:\mysecurestring.txt' | ConvertTo-SecureString
$cred = new-object -typename System.Management.Automation.PSCredential `
-argumentlist $username, $password
$serverNameOrIp = "192.168.1.1"
Restart-Computer -ComputerName $serverNameOrIp `
-Authentication default `
-Credential $cred
<any other parameters relevant to you>
Run Code Online (Sandbox Code Playgroud)
您可能需要不同的-Authentication开关值,因为我不了解您的环境.
Jer*_*eer 67
还有另一种方式,但......
如果你 不想在脚本文件中输入密码,请不要这样做(在脚本中存储密码不是一个好主意,但我们中的一些人只是想知道如何.)
好的,这是警告,这是代码:
$username = "John Doe"
$password = "ABCDEF"
$secstr = New-Object -TypeName System.Security.SecureString
$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $secstr
Run Code Online (Sandbox Code Playgroud)
$cred 将获得John Doe的凭证,密码为"ABCDEF".
替代方法是准备好使用密码:
$password = convertto-securestring -String "notverysecretpassword" -AsPlainText -Force
Run Code Online (Sandbox Code Playgroud)
Win*_*red 29
关于存储凭证,我使用两个函数(通常在从我的配置文件加载的模块中):
#=====================================================================
# Get-MyCredential
#=====================================================================
function Get-MyCredential
{
param(
$CredPath,
[switch]$Help
)
$HelpText = @"
Get-MyCredential
Usage:
Get-MyCredential -CredPath `$CredPath
If a credential is stored in $CredPath, it will be used.
If no credential is found, Export-Credential will start and offer to
Store a credential at the location specified.
"@
if($Help -or (!($CredPath))){write-host $Helptext; Break}
if (!(Test-Path -Path $CredPath -PathType Leaf)) {
Export-Credential (Get-Credential) $CredPath
}
$cred = Import-Clixml $CredPath
$cred.Password = $cred.Password | ConvertTo-SecureString
$Credential = New-Object System.Management.Automation.PsCredential($cred.UserName, $cred.Password)
Return $Credential
}
Run Code Online (Sandbox Code Playgroud)
还有这个:
#=====================================================================
# Export-Credential
# Usage: Export-Credential $CredentialObject $FileToSaveTo
#=====================================================================
function Export-Credential($cred, $path) {
$cred = $cred | Select-Object *
$cred.password = $cred.Password | ConvertFrom-SecureString
$cred | Export-Clixml $path
}
Run Code Online (Sandbox Code Playgroud)
你这样使用它:
$Credentials = Get-MyCredential (join-path ($PsScriptRoot) Syncred.xml)
Run Code Online (Sandbox Code Playgroud)
如果凭证文件不存在,则第一次会提示您,此时它会将凭证存储在XML文件中的加密字符串中.第二次运行该行时,xmlfile就会出现并自动打开.
Bru*_*vin 10
我必须从需要不同凭据的远程服务器运行SCOM 2012功能.我通过将密码解密函数的输出作为输入传递给ConvertTo-SecureString来避免使用明文密码.为清楚起见,此处未显示.
我喜欢强烈地输入我的声明.$ strPass的类型声明正常工作.
[object] $objCred = $null
[string] $strUser = 'domain\userID'
[System.Security.SecureString] $strPass = ''
$strPass = ConvertTo-SecureString -String "password" -AsPlainText -Force
$objCred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ($strUser, $strPass)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
447094 次 |
| 最近记录: |