programing

Powershell: 다른 사용자 이름/비밀번호로 네트워크 드라이브를 매핑하는 방법

powerit 2023. 10. 5. 23:35
반응형

Powershell: 다른 사용자 이름/비밀번호로 네트워크 드라이브를 매핑하는 방법

배경:로컬 컴퓨터의 다음 파워셸 스크립트를 사용하여 일부 네트워크 드라이브를 자동으로 매핑한다고 가정합니다.

$net = $(New-Object -ComObject WScript.Network);
$net.MapNetworkDrive("p:", "\\papabox\files");

$net = $(New-Object -ComObject WScript.Network);
$net.MapNetworkDrive("q:", "\\quebecbox\files");

## problem -- this one does not work because my username/password
## is different on romeobox
$net = $(New-Object -ComObject WScript.Network);
$net.MapNetworkDrive("r:", "\\romeobox\files");

질문:로미오박스의 사용자 이름/비밀번호가 다른 두 박스와 다른데, 로미오박스에도 연결할 수 있도록 스크립트를 수정하려면 어떻게 해야 합니까?

$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive("r:", "\\romeobox\files", $false, "domain\user", "password")

속임수를 쓰려면,

친절함,

댄.

스크립트나 데이터 파일의 일반 텍스트에 암호를 넣지 않고 암호를 저장하는 방법이 필요한 경우 DPAPI를 사용하여 암호를 보호하여 파일에 안전하게 저장했다가 나중에 일반 텍스트로 검색할 수 있습니다.

# Stick password into DPAPI storage once - accessible only by current user
Add-Type -assembly System.Security
$passwordBytes = [System.Text.Encoding]::Unicode.GetBytes("Open Sesame")
$entropy = [byte[]](1,2,3,4,5)
$encrytpedData = [System.Security.Cryptography.ProtectedData]::Protect( `
                       $passwordBytes, $entropy, 'CurrentUser')
$encrytpedData | Set-Content -enc byte .\password.bin

# Retrieve and decrypted password
$encrytpedData = Get-Content -enc byte .\password.bin
$unencrytpedData = [System.Security.Cryptography.ProtectedData]::Unprotect( `
                       $encrytpedData, $entropy, 'CurrentUser')
$password = [System.Text.Encoding]::Unicode.GetString($unencrytpedData)
$password

PowerShell을 사용하여 드라이브를 매핑하는 방법을 알아보러 오신 건가요?

PowerShell 3.0에는 더 간단한 방법이 있습니다.New-PSDrive에 업데이트되었습니다.-persist선택.예.

New-PSDrive -Name U -PSProvider FileSystem -Root \\yourserver\your\folder -Credential yourdomain\username -Persist

예전에.New-PSDrive현재 PowerShell 세션에만 영향을 미쳤습니다.-persist는 매핑이 O/S에 그대로 등록되도록 합니다.새 PS 드라이브 보기

원래 질문에 답하려면 사용된 자격 증명을 변경할 수 있습니다.사용.-Credential도메인\사용자 이름을 변경하면 Windows에서 암호를 묻는 메시지가 표시됩니다.또 다른 방법은 아래 예와 같이 PSC redential 개체를 전달하는 것입니다.자세한 내용은 Get-Credential을 참조하십시오.

PS C:\> $User = "mydomain\username"
PS C:\> $PWord = ConvertTo-SecureString -String "mypassword" -AsPlainText -Force
PS C:\> $Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
PS C:\> New-PSDrive -Name U -PSProvider FileSystem -Root \\domain\some\folder -Credential $Credential -Persist  

저는 이 쉬운 라이너가 제 경우에 효과가 있다는 것을 알았습니다. (작은 "공개" 생각 ; )

(시작-프로세스 -파일 경로 "C:\windows\system32")NET.exe" -ArgumentList "USE I: \Server\Volume /USER:XXXX 비밀번호 / persistent:yes" -Wait -Pasthru).종료코드

추가 보너스로 보고할 수 있는 멋진 종료 코드를 얻게 됩니다.도움이 되길 바랍니다.

$User = "user"
$PWord = ConvertTo-SecureString -String "password" -AsPlainText -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
$net = $(New-Object -ComObject WScript.Network)
$net.MapNetworkDrive("r:", "\\server\share")

powershell native(파워셸 네이티브)를 사용하도록 설정되어 있는 경우(이러한 것이 있는 경우), 다음을 사용할 수 있습니다.

 New-SMBMapping -LocalPath "V:" -RemotePath $NetworkPath -UserName $UserAndDomain -Password $pass 

참조: https://learn.microsoft.com/en-us/powershell/module/smbshare/new-smbmapping?view=win10-ps

Remove-SMBMapping 등의 추가 너겟이 있습니다.

언급URL : https://stackoverflow.com/questions/1530733/powershell-how-to-map-a-network-drive-with-a-different-username-password

반응형