2013-07-31 75 views
3

有沒有什麼辦法可以期待和產生PowerShell。 我必須使用powershell解析CLI程序,它需要輸入密碼,有沒有什麼方法可以通過PowerShell輸入密碼。 即使在bash中,perl或python也可以使用expect/spawn 在powershell中有沒有解決方案?用PowerShell期待和產卵

回答

-1

您可以使用Read-Host提示用戶輸入。有關更多信息,請參見here

$pass = Read-Host 'What is your password?' -AsSecureString 
$decodedpass = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pass)) 

我敢肯定,你想與重生的事,但你可以通過只調用他們做這將是創建一個文本文件

.\MyOtherScript.ps1 
+1

嗨, 我不知道如果我不解釋情況很清楚,我想避免用戶交互。 powershell調用的程序是要求輸入密碼,我希望避免這一步,通常Linux使用Expect和Spawn將這些情況發送到嵌套程序。 – POLLOX

1

一種方式執行其他腳本或可執行文件使用加密密碼一次,然後根據需要在多個腳本中將該文件作爲密碼進行調用。

創建密碼文件一次:

$pwd = Read-Host 'Enter password for encrypting:' -AsSecureString | ConvertFrom-SecureString | Out-File -Path 'C:\SpecialFiles\CLIPassword.txt' 

然後你可以使用它時,它的需要:當你需要提供給腳本的用戶名和密碼

$pass = (Get-Content -Path 'C:\SpecialFiles\CLIPassword.txt' | ConvertTo-SecureString) 
$creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList (<insert CLI UserName>, $pass) 

然後,你只需管

$creds | <command> 

或者如果該命令支持-Credential參數

<command> -Credential $creds 

如果你的命令需要用戶名和密碼分別輸入,你可以做到這一點通過指定屬性名稱:

<command> -UserName $creds.UserName -Password $creds.Password