0

ボタンのグリッドから MSTSC を起動するスクリプトを作成しています。これらのボタンは、それぞれ異なるサーバー接続を開きます。別のスクリプトから借りた、管理者の資格情報を取得して保存する別のボタンがあります。クリックすると、ボタンは次のgetAdmin関数を呼び出します。

function getAdmin {
$returnObject = $null; $credValid = $null;

$cred = Get-Credential #Read credentials
$username = $cred.username
$password = $cred.GetNetworkCredential().password

$CurrentDomain = "LDAP://" + ([ADSI]"").distinguishedName
$domain = New-Object System.DirectoryServices.DirectoryEntry($CurrentDomain,$UserName,$Password)

if ($domain.name -eq $null)
{
    $credValid = $false
    $cred = $null
} else {
    $credValid = $true
}
$returnobject = new-object psobject -property @{ Valid = $credValid; Credentials = $cred }
return $returnObject }

次に、「サーバーボタン」があります。

$btnServ = new-object system.windows.forms.button
$btnServ.location = new-object system.drawing.point (10,200)
$btnServ.text = "Server Name (SERVER)"
$btnServ.width=250
$btnServ.height = 30
$btnServ.add_click({ Start-Process mstsc -ArgumentList "/v:SERVER" -Credential $cred })

ここで、最初のボタンを使用して資格情報を保存し、そのボタンをクリックするとbtnServ、前のアクションから保存された資格情報を取得する代わりに、「Windows PowerShell Credential Request」のプロンプトが表示されます。-Credential $cred最初のボタンをクリックしたかどうかに関係なく、通話を終了するgetAdminと、ログオン試行が失敗し、間違った情報を提供したと表示されるだけです。

理想的には、資格情報を保存したいのですが、どのサーバー ボタンを押しても、資格情報を 2 回入力する代わりにログインできます。

4

1 に答える 1