Как создать PSDrive с использованием учетных данных?
Когда я подключаюсь к общей папке "\\ip_address\" без использования учетных данных, я подключаюсь успешно:
$driveInfo = New-PSDrive `
-Name $driveName `
-PSProvider "FileSystem" `
-Root $targetDirectory `
-Scope "Script"
Когда я указываю учетные данные для этой команды:
$driveInfo = New-PSDrive `
-Name $driveName `
-PSProvider "FileSystem" `
-Root $targetDirectory `
-Credential (Get-Credential) ` # Now ask credentials from user.
-Scope "Script"
Я получаю ошибку:
System.ComponentModel.Win32Exception (0x80004005): сетевой путь не найден
Что означает эта ошибка?
Как я могу запросить учетные данные у пользователя и использовать их для сопоставления удаленной общей папки?
ОС: Windows 10
PSVersion: 5.0.10586.672
BuildVersion: 10.0.10586.672
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
Следующая команда хороша:
New-PSDrive -Name "test" -PSProvider FileSystem -Root "\\server.ru\"
Следующая команда плохая:
New-PSDrive -Name "test" -PSProvider FileSystem -Root "\\server.ru\" -Credential (Get-Credential)
3 ответа
Я знаю, что это очень давно, но проблема в том, что в пути для -root стоит косая черта.
New-PSDrive -Name "test" -PSProvider FileSystem -Root "\\server.ru\"
должно быть
New-PSDrive -Name "test" -PSProvider FileSystem -Root "\\server.ru"
Попробуйте передать объект PSCredentials:
$username = "domain01\admin01"
$password = cat C:\securestring.txt | convertto-securestring
$cred = new-object -typename System.Management.Automation.PSCredential `
-argumentlist $username, $password
так -Credential $cred
или используйте:
$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive("u:", "\\server\share", $false, "domain\user", "password")
Я надеюсь, что моя функция соответствует вашим потребностям.
Function ConnectTo-Domain()
{
$Domain = "my.domain.com"
$DomainName = "MYDOMAIN"
$userCred = $ENV:USERNAME
do
{
# Get Domain Controllers of target domain
$targetdomaindc = Get-ADDomainController -DomainName $Domain -Discover
$targetdcname = $($targetdomaindc.hostname)
# Authenticate with user providing password credential
Write-Host "`nEnter $Domain credentials to get available Domain Controllers" -ForegroundColor Yellow
$DCs = Get-ADDomainController -Filter * -Server $targetdcname -Credential (Get-Credential $Domain\$userCred)
}
until ($DCs -ne $NULL)
$i = 0
do
{
# Check that the target Domain Controller is available
$testConnection = Test-Connection -ComputerName $DCs.Name[$i] -Count 2
$currentDC = $DCs.Name[$i]
$i++
}
until($testConnection -ne $NULL)
# Check if an existing PSDrive exists and create if not
$checkDrives = Get-PSDrive
if ($checkDrives.Name -notcontains "$DomainName")
{
Write-Host "Enter $Domain credentials to connect to an available Domain Controller" -ForegroundColor Yellow
New-PSDrive -Name $DomainName -PSProvider ActiveDirectory -Server $currentDC -Credential (Get-Credential $Domain\$userCred) -Root "//RootDSE/" -Scope Global
}
$DomainDriveName = $DomainName + ":\"
cd $DomainDriveName
}