1

Когда я вошел на сервер Windows как администратор в PowerShell, как я могу переключиться на другого пользователя без ввода пароля? Я ищу точно такую же функцию, как "sudo su -" или "su" в Linux.

Спасибо

1 ответ1

1

Вам нужно написать пользовательскую функцию для этого. Вы можете использовать следующую функцию (ниже) и поместить ее в свой профиль PowerShell.

чтобы использовать это, вы должны использовать расширенную консоль PowerShell.

Как видите, у вас есть параметр $user , для которого по умолчанию установлено значение adminsystem (здесь используется ваше имя пользователя по умолчанию). В ValidateSet() вы можете указать, какие значения допустимы для параметра $user .

Затем он switch() зависимости от вашего параметра $user и прочитает правильное имя пользователя и пароль.

Затем он создаст объект учетных данных и pssession как желаемый пользователь.

Я не рекомендую использовать пароли в виде простого текста в скрипте! Вы должны следовать этому, чтобы безопасно хранить ваши пароли в скрипте

function switch-psuser {

    Param(
        [Parameter(Position=0)]
        [ValidateSet("adminsystem","administrator")]
        $User = "adminsystem"
    )

    switch($User)
    {
        'adminsystem'   { $username = "domain\adminsystem" ; $pw = "yyy"}
        'administrator' { $username = "domain\administrator" ; $pw = "zzz" }
    }

    $password = $pw | ConvertTo-SecureString -AsPlainText -Force
    $cred = New-Object System.Management.Automation.PSCredential -ArgumentList $username,$password
    New-PSSession -Credential $cred | Enter-PSSession
}

Пример вывода:

PS C:\WINDOWS\system32> switch-psuser
[localhost]: PS C:\Users\adminsystem\Documents> whoami
domain\adminsystem
[localhost]: PS C:\Users\adminsystem\Documents> exit

PS C:\WINDOWS\system32> switch-psuser administrator
[localhost]: PS C:\Users\Administrator.DOMAIN\Documents> whoami
DOMAIN\administrator
[localhost]: PS C:\Users\Administrator.DOMAIN\Documents> exit
PS C:\WINDOWS\system32>

В этом примере вы можете видеть, что при указании значения $user него не будет пользователя по умолчанию. при предоставлении имени пользователя, которое находится в ValidateSet() и в switch() это займет

надеюсь, что это не было слишком сложно. в противном случае просто спросите :)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .