Ich kann Remote-Desktop in eine bestimmte Maschine und führen Sie Svn, ohne Angabe von Authentifizierungsinformationen, und es funktioniert; Meine AD-Authentifizierung ermöglicht mir den Zugriff auf das Repository, das ich möchte.Powershell, svn und Authentifizierung
Ich kann Powershell verwenden, um eine Verbindung zur Maschine herzustellen und auch svn-Befehle auszuführen. Wenn ich das tue, bekomme ich "Zugang verboten". [Environment]::UserName
erscheint mit dem Benutzernamen, den ich erwartet habe (mein AD-Benutzername), wenn er über das Skript ausgeführt wird, das remote ausgeführt wird.
Was fehlt mir, damit das funktioniert?
Einige Code:
$Session = New-PSSession -ComputerName $computerName;
if (-Not ($Session)) {
Write-Host "Did not create session!";
Return;
}
Invoke-Command -Session $Session -FilePath 'switchAllRepositories.ps1' -ArgumentList $branchName;
Remove-PSSession $Session;
und in switchAllRepositories, habe ich einen Parameter:
Param(
[string]$branchURL
)
eine Reihe von Anrufen wie:
If(Test-Path "C:\webfiles\repositoryname") {
Write-Host "Switching repositoryname"
SwitchRepo "repositoryname" ($branchURL) "C:\webfiles\repositoryname";
}
, die rufen:
Function SwitchRepo ($repoName, $branchPath, $workingCopy)
{
$to = ("https://[url]/svn/" + $repoName + $branchPath);
Write-Host "to $to";
#debug
$user = [Environment]::UserName
Write-Host "as $user";
$exe = "C:\Program Files\TortoiseSVN\bin\svn.exe";
&$exe switch "$to" "$WorkingCopy" --username [redacted] --password [redacted] --no-auth-cache --non-interactive --trust-server-cert
if ($process.ExitCode -ne 0) {
#$wshell = New-Object -ComObject Wscript.Shell
#$wshell.Popup("Error switching " + $repoName,0,"Done",0x1)
Write-Host "Error detected!"
}
}
Der genaue Fehler ist:
Svn: E175013: Kann nicht in einem Endlager URL '[snipped] + CategoryInfo verbinden: NotSpecified: (SVN: E175013: U ... Vereinfacht/20150620' : String) [], Remote + FullyQualifiedErrorId: NativeCommandError svn: E175013: Zugriff auf '[snipped] verboten
Hängt davon ab, wie Sie verbinden. –
@ MathiasR.Jessen Was müssen Sie wissen? Ich erstelle eine Remote-Sitzung und rufe ein Skript mit der Sitzung auf. – Yamikuronue
Zeigen Sie den Teil von 'switchAllRepositories.ps1', wo es Parameter akzeptiert (wenn Sie es mit 'Invoke-Command' aufrufen, senden Sie einen Verzweigungsnamen als Argument), sollte es ein param-Block sein, ganz oben in der PS1, denke ich. – briantist