ฉันเห็นตัวอย่างหนึ่งที่ใช้นำเข้า / ส่งออก -CLIXML
นี่คือคำสั่งที่ฉันโปรดปรานสำหรับปัญหาที่คุณพยายามแก้ไข และวิธีใช้งานที่ง่ายที่สุดก็คือ
$passwordPath = './password.txt'
if (-not (test-path $passwordPath)) {
$cred = Get-Credential -Username domain\username -message 'Please login.'
Export-Cli -InputObject $cred -Path $passwordPath
}
$cred = Import-CliXML -path $passwordPath
ดังนั้นหากไฟล์ไม่มีอยู่ในเครื่องไฟล์นั้นจะพร้อมท์เพื่อรับข้อมูลรับรองและเก็บไว้ สิ่งนี้จะใช้[pscredential]
วัตถุที่ไม่มีปัญหาและจะซ่อนข้อมูลรับรองเป็นสตริงที่ปลอดภัย
ในที่สุดก็ใช้ข้อมูลประจำตัวตามปกติ
Restart-Computer -ComputerName ... -Credentail $cred
หมายเหตุเกี่ยวกับความปลอดภัย :
จัดเก็บข้อมูลรับรองอย่างปลอดภัยบนดิสก์
เมื่ออ่านโซลูชันในตอนแรกคุณอาจระวังการจัดเก็บรหัสผ่านไว้ในดิสก์ แม้ว่าจะเป็นเรื่องธรรมดา (และระมัดระวัง) ในการระมัดระวังการทิ้งฮาร์ดไดรฟ์ของคุณด้วยข้อมูลที่ละเอียดอ่อน แต่ Export-CliXml cmdlet จะเข้ารหัสวัตถุข้อมูลรับรองโดยใช้ API การปกป้องข้อมูลมาตรฐานของ Windows สิ่งนี้ทำให้มั่นใจได้ว่าเฉพาะบัญชีผู้ใช้ของคุณเท่านั้นที่สามารถถอดรหัสเนื้อหาได้อย่างถูกต้อง ในทำนองเดียวกัน cmdlet ConvertFrom-SecureString ยังเข้ารหัสรหัสผ่านที่คุณให้
แก้ไข: เพียงอ่านคำถามเดิมอีกครั้ง ข้างต้นจะทำงานตราบใดที่คุณได้เริ่มต้นการ[pscredential]
ไปยังฮาร์ดดิสก์ นั่นคือถ้าคุณวางสิ่งนั้นลงในสคริปต์ของคุณและเรียกใช้สคริปต์เมื่อมันจะสร้างไฟล์นั้นและจากนั้นเรียกใช้สคริปต์แบบอัตโนมัติจะง่าย