Exécuter le bloc de code localement comme un autre utilisateur dans un script powershell

C'est quelque chose d'incroyablement simple, mais j'ai juste ne peut pas obtenir quoi que ce soit au travail. Je veux exécuter un bloc de code dans un script powershell en vertu d'un utilisateur spécifique. Le mot-clé est localement et je suis à l'aide de powershell 2.0.

Invoke-Command semble avoir besoin d'un hôte distant? Je lance le suivant et le message d'erreur que je vois semble suggérer comme beaucoup:

$strScriptUser = "DOMAIN\USER"
$strPass = "PASSWERD"
$PSS = ConvertTo-SecureString $strPass -AsPlainText -Force
$cred = new-object system.management.automation.PSCredential $strScriptUser,$PSS
Invoke-Command -ComputerName "." -scriptblock {
write-output "HI!"
} -Credential $cred

Start-Job-ScriptBlock n'est pas pris en charge avec powershell 2.0? Je lance le suivant et le message d'erreur que je vois semble suggérer comme beaucoup:

$strScriptUser = "DOMAIN\USER"
$strPass = "PASSWERD"
$PSS = ConvertTo-SecureString $strPass -AsPlainText -Force
$cred = new-object system.management.automation.PSCredential $strScriptUser,$PSS
Start-Job -ScriptBlock {
write-output "HI!"
} -Credential $cred

Je fais quelque chose de mal, ou est-il un autre moyen?

Ajouté: Voici ce que j'essaie de faire en premier lieu. Je suis en train de faire une tâche planifiée qui s'exécute lorsqu'un utilisateur se connecte à/déverrouiller un terminal qui écrit les informations de connexion dans un fichier. La tâche planifiée s'exécute en tant qu'utilisateur local afin d'obtenir le nom d'utilisateur, profil, etc. de l'information. Les informations d'ouverture de session est ensuite écrit dans un fichier journal à l'aide d'un compte d'utilisateur différent, qui est le seul compte qui peuvent modifier le fichier. Pour décourager l'accès aux informations d'identification d'ouverture de session dans le script que j'convertir le script pour un EXE à l'aide de PS2EXE.

Voir ici: matthewyarlett.blogspot.be/2014/04/powershell-runas.html L'astuce est de passer par un PSSession
Il peut être difficile de vous aider si la seule personne qui voit des messages d'erreur, c'est vous... 😉
Les messages d'erreur ne sont pas en anglais, donc je vais faire de mon mieux pour traduire. Pour Invoke-Command: "impossible de se connecter au serveur distant [localhost]. Le client n'a pas pu se connecter à la destination spécifiée. Veuillez confirmer que le service de destination est en cours d'exécution et est dans un état qui peut recevoir les demandes."
Le Start-Job solution a fonctionné pour moi dans PowerShell 3.0. (Bien sûr, vous devez appeler Wait-Job | Receive-Job à réellement obtenir les résultats.)

OriginalL'auteur wrieedx | 2014-09-01