Problemi nel salvataggio di un file XML modificato in uno script di PowerShell


1

Sto scrivendo uno script di PowerShell che deve modificare il file di configurazione XML per il servizio token Claims to Windows (C2WTS) come "qualsiasi utente" ma non sono stato in grado di salvare il file dopo aver apportato modifiche all'oggetto XML. Utilizzando il seguente codice:

$xml.load("C:\Program Files\Windows Identity Foundation\v3.5\c2wtshost.exe.config")
changes here
$xml.save("C:\Program Files\Windows Identity Foundation\v3.5\c2wtshost.exe.config")

Eseguendo questo codice, viene visualizzato l'errore:

Eccezione che chiama "Salva" con "1" argomento: "Accesso negato al percorso 'C: \ Programmi \ Windows Identity Foundation \ v3.5 \ c2wtshost.exe.config'."

Ho provato a impostare l'ACL in modo che l'utente che esegue lo script possa quindi modificare il file XML con il seguente codice:

$acl = Get-Acl "C:\Program Files\Windows Identity Foundation\v3.5\c2wtshost.exe.config"
$Ar = New-Object system.Security.AccessControl.FileSystemAccessRule($user,"FullControl","Allow")
$acl.SetAccessRule($Ar)
Set-Acl "C:\Program Files\Windows Identity Foundation\v3.5\c2wtshost.exe.config" $acl

ma viene restituito un errore come:

"Set-Acl: tentativo di eseguire un'operazione non autorizzata."

Qualcuno può aiutarmi a raggiungere un punto in cui posso salvare le modifiche apportate al file XML?

Risposte:


0

Non sono sicuro di quale sistema operativo stai utilizzando, ma il kernel di Vista odia qualsiasi cosa scriva su Programmi tranne i programmi di installazione. Alcuni programmi meno recenti non sono compatibili perché tentano di scaricare gli aggiornamenti e così via in quella cartella e falliscono. Non ho studiato i motivi poiché ritengo che nel complesso sia una buona cosa. Ma sono sicuro che siano coinvolti problemi con le autorizzazioni. Hai controllato le autorizzazioni per la cartella di destinazione e i suoi genitori?

Inoltre, non so quanto sia rilevante, ma se il file accede a qualcosa, non sarà disponibile per la modifica. I messaggi di errore prodotti in genere imitano quelli dei problemi di autorizzazione. Sai se esiste un altro handle per quel file?


Il sistema operativo è Windows Server 2008 R2 e il file ha impostazioni di sicurezza per amministratori e utenti. Gli amministratori hanno il controllo completo, ma solo gli utenti hanno impostato Leggi ed esegui. Ho pensato che Set-ACL sarebbe stato il cmdlet che avrebbe consentito di modificare il file?
Parassita il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.