2016-09-15 4 views
0

Ich habe ein Dilemma.Powershell und laufende geplante Aufgabe als anderer Benutzer

Ich versuche, eine geplante Aufgabe in Windows einzurichten, die ein Powershell-Skript als ein anderer Benutzer ausführt (ein Dienstkonto, das zwar Zugriff, aber keine Anmeldeberechtigung hat). Das Problem ist, dass uns unsere Sicherheitsgruppe gesagt hat, keine Passwörter einzuprogrammieren (offensichtlich ein guter Rat), aber die Verbindungszeichenfolge für das SQL scheint es im Klartext zu benötigen. Ich bin, dies zu umgehen, indem Sie eine Passwort-Datei zu erstellen:

$credential = Get-Credential 
$credential.Password | ConvertFrom-SecureString | Set-Content e:\temp\password.txt 

Und dann im Skript es zurück in Klartext umzuwandeln (in einer Verbindungszeichenfolge verwendet werden)

$password = cat E:\temp\password.txt | ConvertTo-SecureString 
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($password) 
$UnsecurePassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) 

$connectionString = "Data Source=<mydatabase>;Initial Catalog='<mytable>';User ID=tng ;Password=$Unsecurepassword;" 

Der Haken ist jedoch, Wenn ich die Kennwortdatei erstelle und das Skript als ich selbst ausführe, funktioniert es großartig, aber ich kann es nicht als eine geplante Aufgabe ausführen. In früheren Erfahrungen habe ich gesehen, wo die Kennwortdatei wahrscheinlich von dem Dienstkonto erstellt werden muss, das die geplante Aufgabe ausführt, aber ohne lokale Anmelderechte bin ich mir nicht sicher, wie ich das erstellen soll. Irgendwelche Gedanken?

Ich habe versucht this technet article, aber es scheint, dass es immer noch lokale Anmeldung von dem anderen Konto erfordert.

+0

Nun, ich glaube, ich könnte etwas haben [li nk] (http://www.adminarsenal.com/admin-arsenal-blog/secure-password-with-powershell-encrypting-credentials-part-2/) – jdolluc

Antwort

0

die Antwort gefunden - ich brauchte einen Schlüssel für die sichere Zeichenfolge hinzuzufügen:

Beim Erstellen der Datei - Zugabe in dem $ key:

[byte[]] $key = (1..16) 
$credential = Get-Credential 
$credential.Password | ConvertFrom-SecureString -key $key | Set-Content e:\temp\password.txt 

Und dann, wenn es wieder in dem Lese:

$passwordfile = "E:\temp\password.txt" 
[byte[]] $key = (1..16) 
$securePassword = Get-Content $passwordfile | ConvertTo-SecureString -Key $key 
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($securepassword) 
$UnsecurePassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) 

Antwort gefunden dank this link

Verwandte Themen