PowerShellで管理者としてWindowsサーバーにログインしているときに、パスワードを入力せずに別のユーザーに切り替えるにはどうすればよいですか? LinuxのSudo su -
またはsu
とまったく同じ機能を探しています。
このためのカスタム関数を作成する必要があります。以下の関数(下記)を使用して、それを PowerShellプロファイル に入れることができます。
これを使用するには、管理者特権のPowerShellコンソールを使用する必要があります。
ご覧のとおり、_$user
_パラメータがあり、デフォルトでadminsystem
に設定されています(ここではデフォルトのユーザ名を使用します)。 ValidateSet()
では、_$user
_パラメータに許可される値を指定できます。
次に、_$user
_パラメータに応じてswitch()
を実行し、正しいユーザー名とパスワードを読み取ります。
次に、資格情報オブジェクトを作成し、目的のユーザーとしてpssessionを作成します。
スクリプトではプレーンテキストとしてパスワードを使用することをお勧めします! this に従って、パスワードをスクリプトに安全に保存する必要があります
_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()
にあるユーザー名を指定すると、そのユーザー名が使用されます
それがあまり複雑ではないことを願っています。