Logga in med Microsoft
Logga in eller skapa ett konto.
Hej,
Välj ett annat konto.
Du har flera konton
Välj det konto som du vill logga in med.

Introduktion

Microsoft har publicerat säkerhetsbulletinen MS14-025. Mer information om den här säkerhetsbulletinen:

Skaffa hjälp och support för den här säkerhetsuppdateringen


Hjälp med att installera uppdateringar:
Stöd för Microsoft Update

Säkerhetslösningar för IT-proffs:
TechNet Security felsökning och Support

Skydda din Windows-dator med Windows från virus och skadliga program:
Lösning för virus och Säkerhetscenter

Lokal support enligt ditt land:
Internationellt stöd

Mer Information

Kända problem och mer information om den här säkerhetsuppdateringen

Följande artiklar innehåller mer information om den här säkerhetsuppdateringen som gäller enskilda produktversioner. Artiklarna kan innehålla information om kända problem. Om så är fallet finns ett känt problem under varje artikel-länk.

  • 2928120



    MS14-025: Beskrivning av säkerhetsuppdatering för Windows Remote Server Administration Tools för system som har uppdatering 2919355 installeras: den 13 maj 2014

  • 2961899

    MS14-025: Beskrivning av säkerhetsuppdatering för Windows Remote Server Administration Tools för system som inte har uppdatera 2919355 installeras: den 13 maj 2014

Grupprincip-inställningar

Översikt


Vissa inställningar för grupprincip kan lagra ett lösenord. Den här funktionen tas bort eftersom lösenordet lagrades insecurely. Den här artikeln beskrivs ändringar i användargränssnittet och alla tillgängliga lösningar.

Följande inställningar i grupprincip tillåter inte längre användarnamn och lösenord ska sparas:

  • Enhetsmappningar

  • Lokala användare och grupper

  • Schemalagda aktiviteter

  • Tjänster

  • Datakällor

Detta påverkar beteendet för alla befintliga grupprincip-objekt (GPO) i din miljö som förlitar sig på lösenord som finns i dessa inställningar. Den kommer också att skapa nya grupprincip-inställningar med hjälp av den här funktionen.

Enhetsmappningar, lokala användare och grupper och tjänster, kan du kanske att uppnå liknande mål för säkrare, andra funktioner i Windows.

Du kan inte att uppnå samma mål som var tillgängliga via icke-säkra funktionen lösenord för grupprincip-inställningar för schemalagda aktiviteter och datakällor.

Scenarier

Följande inställningar för grupprincip som påverkas av ändringen. Varje inställning beskrivs kortfattat och sedan i detalj. Dessutom tillhandahålls lösningar som gör att du kan utföra samma uppgifter.

Aktuella inställningar

Gäller för användare

Gäller för datorn

Hantering av lokala användare

Ja

Ja

Mappade enheter

Ja

Nej.

Tjänster

Nej.

Ja

Schemalagda aktiviteter (up-nivå)

Ja

Ja

Schemalagda aktiviteter (äldre)

Ja

Ja

Omedelbara aktiviteter (up-nivå)

Ja

Ja

Omedelbara aktiviteter (äldre)

Ja

Ja

Datakällor

Ja

Ja

Sammanfattning av ändringar

  • Lösenordsfält i alla aktuella inställningar är inaktiverade. Administratörer kan inte skapa nya inställningar med hjälp av fälten lösenord.

  • Fältet användarnamn är inaktiverad i vissa inställningar.

  • Befintliga inställningar som innehåller ett lösenord kan inte uppdateras. De kan endast vara borttagen eller inaktiverad, efter specifika önskemål.

  • Beteendet för ta bort och inaktivera åtgärder har inte ändrats för inställningar.

  • När en administratör öppnar någon inställning som innehåller attributet CPassword, får administratören följande varningsdialogrutan att informera honom eller henne senaste utfasningen. Om du försöker spara ändringar i nya eller befintliga inställningar som kräver attributet CPassword utlöser samma dialogruta. Bara ta bort och inaktivera åtgärder utlöser inte varningsmeddelanden.






Scenario 1: Hantering av lokala användare


Hantering av lokala användare inställning används ofta för att skapa lokala administratörer som har ett känt lösenord på en dator. Den här funktionen är inte säker på ett sådant sätt att lösenord ska lagras i grupprincip-inställningar. Därför är funktionen inte längre tillgänglig. Följande inställningar påverkas:

  • Datorkonfiguration -> Kontrollpanelen Inställningar -> lokala användare och grupper -> nya -> lokal användare

  • Användarkonfiguration -> Kontrollpanelen Inställningar -> lokala användare och grupper -> nya -> lokal användare

Viktiga ändringar

Åtgärd: Skapa eller ersätta

  • Fält för användarnamn, lösenordoch Bekräfta lösenord är inaktiverad.

  • Den här dialogrutan visas när administratören öppnar eller försöker spara ändringar i en befintlig inställning som innehåller ett lösenord.





Åtgärd: uppdatera

  • Fälten lösenord och Bekräfta lösenord är inaktiverad.

  • Den här dialogrutan visas när administratören öppnar eller försöker spara ändringar i en befintlig inställning som innehåller ett lösenord.





Åtgärd: ta bort

  • Ingen förändring i beteende

Lösningar


Följande skript tillhandahålls som ett alternativ till CPassword för dem som tidigare förlitade sig på inställningen grupprincip för att ange lokala administratörslösenord. Kopiera och spara innehållet i en ny fil i Windows PowerShell och sedan köra skriptet som anges i dess. Avsnittet.

Microsoft tillhandahåller programmeringsexempel endast utan garanti varken uttryckliga eller underförstådda. Detta inkluderar men är inte begränsat till, underförstådda garantier om säljbarhet eller lämplighet för ett särskilt ändamål. Den här artikeln förutsätter att du är bekant med det programmeringsspråk som demonstreras och de verktyg som används för att skapa och felsöka procedurer. Microsofts supporttekniker kan hjälpa till att förklara funktionen hos en viss procedur. De kommer inte ändra dessa exempel för att ge ytterligare funktioner eller skapa procedurer som motsvarar dina speciella behov.

function Invoke-PasswordRoll
{
<#
.SYNOPSIS

This script can be used to set the local account passwords on remote machines to random passwords. The username/password/server combination will be saved in a CSV file.
The account passwords stored in the CSV file can be encrypted using a password of the administrators choosing to ensure clear-text account passwords aren't written to disk.
The encrypted passwords can be decrypted using another function in this file: ConvertTo-CleartextPassword


Function: Invoke-PasswordRoll
Author: Microsoft
Version: 1.0

.DESCRIPTION

This script can be used to set the local account passwords on remote machines to random passwords. The username/password/server combination will be saved in a CSV file.
The account passwords stored in the CSV file can be encrypted using a password of the administrators choosing to ensure clear-text account passwords aren't written to disk.
The encrypted passwords can be decrypted using another function in this file: ConvertTo-CleartextPassword

.PARAMETER ComputerName

An array of computers to run the script against using PowerShell remoting.

.PARAMETER LocalAccounts

An array of local accounts whose password should be changed.

.PARAMETER TsvFileName

The file to output the username/password/server combinations to.

.PARAMETER EncryptionKey

A password to encrypt the TSV file with. Uses AES encryption. Only the passwords stored in the TSV file will be encrypted, the username and servername will be clear-text.

.PARAMETER PasswordLength

The length of the passwords which will be randomly generated for local accounts.

.PARAMETER NoEncryption

Do not encrypt the account passwords stored in the TSV file. This will result in clear-text passwords being written to disk.

.EXAMPLE

. .\Invoke-PasswordRoll.ps1 #Loads the functions in this script file
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator","CustomLocalAdmin") -TsvFileName "LocalAdminCredentials.tsv" -EncryptionKey "Password1"

Connects to all the computers stored in the file "computerlist.txt". If the local account "administrator" and/or "CustomLocalAdmin" are present on the system, their password is changed
to a randomly generated password of length 20 (the default). The username/password/server combinations are stored in LocalAdminCredentials.tsv, and the account passwords are AES encrypted using the password "Password1".

.EXAMPLE

. .\Invoke-PasswordRoll.ps1 #Loads the functions in this script file
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator") -TsvFileName "LocalAdminCredentials.tsv" -NoEncryption -PasswordLength 40

Connects to all the computers stored in the file "computerlist.txt". If the local account "administrator" is present on the system, its password is changed to a random generated
password of length 40. The username/password/server combinations are stored in LocalAdminCredentials.tsv unencrypted.

.NOTES
Requirements:
-PowerShellv2 or above must be installed
-PowerShell remoting must be enabled on all systems the script will be run against

Script behavior:
-If a local account is present on the system, but not specified in the LocalAccounts parameter, the script will write a warning to the screen to alert you to the presence of this local account. The script will continue running when this happens.
-If a local account is specified in the LocalAccounts parameter, but the account does not exist on the computer, nothing will happen (an account will NOT be created).
-The function ConvertTo-CleartextPassword, contained in this file, can be used to decrypt passwords that are stored encrypted in the TSV file.
-If a server specified in ComputerName cannot be connected to, PowerShell will output an error message.
-Microsoft advises companies to regularly roll all local and domain account passwords.

#>
[CmdletBinding(DefaultParameterSetName="Encryption")]
Param(
[Parameter(Mandatory=$true)]
[String[]]
$ComputerName,

[Parameter(Mandatory=$true)]
[String[]]
$LocalAccounts,

[Parameter(Mandatory=$true)]
[String]
$TsvFileName,

[Parameter(ParameterSetName="Encryption", Mandatory=$true)]
[String]
$EncryptionKey,

[Parameter()]
[ValidateRange(20,120)]
[Int]
$PasswordLength = 20,

[Parameter(ParameterSetName="NoEncryption", Mandatory=$true)]
[Switch]
$NoEncryption
)


#Load any needed .net classes
Add-Type -AssemblyName "System.Web" -ErrorAction Stop


#This is the scriptblock that will be executed on every computer specified in ComputerName
$RemoteRollScript = {
Param(
[Parameter(Mandatory=$true, Position=1)]
[String[]]
$Passwords,

[Parameter(Mandatory=$true, Position=2)]
[String[]]
$LocalAccounts,

#This is here so I can record what the server name that the script connected to was, sometimes the DNS records get messed up, it can be nice to have this.
[Parameter(Mandatory=$true, Position=3)]
[String]
$TargettedServerName
)

$LocalUsers = Get-WmiObject Win32_UserAccount -Filter "LocalAccount=true" | Foreach {$_.Name}

#Check if the computer has any local user accounts whose passwords are not going to be rolled by this script
foreach ($User in $LocalUsers)
{
if ($LocalAccounts -inotcontains $User)
{
Write-Warning "Server: '$($TargettedServerName)' has a local account '$($User)' whos password is NOT being changed by this script"
}
}

#For every local account specified that exists on this server, change the password
$PasswordIndex = 0
foreach ($LocalAdmin in $LocalAccounts)
{
$Password = $Passwords[$PasswordIndex]

if ($LocalUsers -icontains $LocalAdmin)
{
try
{
$objUser = [ADSI]"WinNT://localhost/$($LocalAdmin), user"
$objUser.psbase.Invoke("SetPassword", $Password)

$Properties = @{
TargettedServerName = $TargettedServerName
Username = $LocalAdmin
Password = $Password
RealServerName = $env:computername
}

$ReturnData = New-Object PSObject -Property $Properties
Write-Output $ReturnData
}
catch
{
Write-Error "Error changing password for user:$($LocalAdmin) on server:$($TargettedServerName)"
}
}

$PasswordIndex++
}
}


#Generate the password on the client running this script, not on the remote machine. System.Web.Security isn't available in the .NET Client profile. Making this call
# on the client running the script ensures only 1 computer needs the full .NET runtime installed (as opposed to every system having the password rolled).
function Create-RandomPassword
{
Param(
[Parameter(Mandatory=$true)]
[ValidateRange(20,120)]
[Int]
$PasswordLength
)

$Password = [System.Web.Security.Membership]::GeneratePassword($PasswordLength, $PasswordLength / 4)

#This should never fail, but I'm putting a sanity check here anyways
if ($Password.Length -ne $PasswordLength)
{
throw new Exception("Password returned by GeneratePassword is not the same length as required. Required length: $($PasswordLength). Generated length: $($Password.Length)")
}

return $Password
}


#Main functionality - Generate a password and remote in to machines to change the password of local accounts specified
if ($PsCmdlet.ParameterSetName -ieq "Encryption")
{
try
{
$Sha256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider
$SecureStringKey = $Sha256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionKey))
}
catch
{
Write-Error "Error creating TSV encryption key" -ErrorAction Stop
}
}

foreach ($Computer in $ComputerName)
{
#Need to generate 1 password for each account that could be changed
$Passwords = @()
for ($i = 0; $i -lt $LocalAccounts.Length; $i++)
{
$Passwords += Create-RandomPassword -PasswordLength $PasswordLength
}

Write-Output "Connecting to server '$($Computer)' to roll specified local admin passwords"
$Result = Invoke-Command -ScriptBlock $RemoteRollScript -ArgumentList @($Passwords, $LocalAccounts, $Computer) -ComputerName $Computer
#If encryption is being used, encrypt the password with the user supplied key prior to writing to disk
if ($Result -ne $null)
{
if ($PsCmdlet.ParameterSetName -ieq "NoEncryption")
{
$Result | Select-Object Username,Password,TargettedServerName,RealServerName | Export-Csv -Append -Path $TsvFileName -NoTypeInformation
}
else
{
#Filters out $null entries returned
$Result = $Result | Select-Object Username,Password,TargettedServerName,RealServerName

foreach ($Record in $Result)
{
$PasswordSecureString = ConvertTo-SecureString -AsPlainText -Force -String ($Record.Password)
$Record | Add-Member -MemberType NoteProperty -Name EncryptedPassword -Value (ConvertFrom-SecureString -Key $SecureStringKey -SecureString $PasswordSecureString)
$Record.PSObject.Properties.Remove("Password")
$Record | Select-Object Username,EncryptedPassword,TargettedServerName,RealServerName | Export-Csv -Append -Path $TsvFileName -NoTypeInformation
}
}
}
}
}


function ConvertTo-CleartextPassword
{
<#
.SYNOPSIS
This function can be used to decrypt passwords that were stored encrypted by the function Invoke-PasswordRoll.

Function: ConvertTo-CleartextPassword
Author: Microsoft
Version: 1.0

.DESCRIPTION
This function can be used to decrypt passwords that were stored encrypted by the function Invoke-PasswordRoll.


.PARAMETER EncryptedPassword

The encrypted password that was stored in a TSV file.

.PARAMETER EncryptionKey

The password used to do the encryption.


.EXAMPLE

. .\Invoke-PasswordRoll.ps1 #Loads the functions in this script file
ConvertTo-CleartextPassword -EncryptionKey "Password1" -EncryptedPassword 76492d1116743f0423413b16050a5345MgB8AGcAZgBaAHUAaQBwADAAQgB2AGgAcABNADMASwBaAFoAQQBzADEAeABjAEEAPQA9AHwAZgBiAGYAMAA1ADYANgA2ADEANwBkADQAZgAwADMANABjAGUAZQAxAGIAMABiADkANgBiADkAMAA4ADcANwBhADMAYQA3AGYAOABkADcAMQA5ADQAMwBmAGYANQBhADEAYQBjADcANABkADIANgBhADUANwBlADgAMAAyADQANgA1ADIAOQA0AGMAZQA0ADEAMwAzADcANQAyADUANAAzADYAMAA1AGEANgAzADEAMQA5ADAAYwBmADQAZAA2AGQA"

Decrypts the encrypted password which was stored in the TSV file.

#>
Param(
[Parameter(Mandatory=$true)]
[String]
$EncryptedPassword,

[Parameter(Mandatory=$true)]
[String]
$EncryptionKey
)

$Sha256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider
$SecureStringKey = $Sha256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionKey))

[SecureString]$SecureStringPassword = ConvertTo-SecureString -String $EncryptedPassword -Key $SecureStringKey
Write-Output ([System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($SecureStringPassword)))
}

Administratörer kan lägga till lokala administratörskonton datorer genom att skapa en Active Directory-grupp och lägger till den i den lokala gruppen administratörer via grupprincip-Inställningar -> lokal grupp. Den här åtgärden cachelagrar inte referenser. Av följande slag i dialogrutan. Denna lösning kräver en anslutning till Active Directory DS när användaren har loggat in med hjälp av dessa referenser.





Scenario 2: Mappade enheter

Administratörer använder enhetsmappningar för att tilldela användare platser i nätverket. Funktion för lösenordsskydd används för att kontrollera att auktoriserade åtkomst till enheten. Följande inställningar påverkas:

  • Användarkonfiguration-> Windows-inställningar -> enhet Maps -> Nytt -> mappad enhet

Viktiga ändringar

Åtgärd: Skapa, uppdatera eller ersätta

  • Fält för användarnamn, lösenordoch Bekräfta lösenord är inaktiverad.




Åtgärd: ta bort

  • Ingen förändring i beteende

Lösningar


Istället för att använda lösenordsmetoden för autentisering kan du använda Utforskaren för att hantera behörigheter och tilldela rättigheter till användare. Du kan använda Active Directory-objekt till behörighet till mappen.


Scenario 3: tjänster

Du kan använda inställningen tjänster för att ändra tjänstens egenskaper på ett sådant sätt att de körs i en kontext än sin ursprungliga säkerhetskontext. Följande inställningar påverkas:

  • Datorkonfiguration -> Kontrollpanelen Inställningar -> tjänster -> Nytt -> Service

Viktiga ändringar

Start: Ingen ändring, automatisk eller manuell

  • Fälten lösenord och Bekräfta lösenord är inaktiverad.

  • Administratören kan använda endast inbyggda konton.




Start: inaktivera

  • Ingen förändring i beteende

Dialogrutan Ny

  • Administratörer som använder icke-inbyggda-användare för det här kontot"visas följande varning:





Lösningar




Tjänster kan fortfarande köras som ett lokalt systemkonto. Tjänstbehörigheter kan ändras på det sätt som beskrivs i följande artikel i Microsoft Knowledge Base:

256345 hur du konfigurerar grupprincip-inställningar för att ange säkerhet för systemtjänster

Observera att om den tjänst som du vill konfigurera inte finns måste du konfigurera inställningar på en dator där tjänsten körs.


Scenario 4: Schemalagda och omedelbara aktiviteter (up-nivå)

Dessa används för att köra schemalagda aktiviteter i en viss kontext. Möjligheten att lagra autentiseringsuppgifter för schemalagda aktiviteter ska köras som en användare när användaren inte är inloggad är inte längre tillgänglig. Följande inställningar påverkas. (Tänk som på vissa plattformar "minst Windows 7" ersättas med "Windows Vista och senare versioner.")

  • Datorkonfiguration -> Kontrollpanelsinställningar -> schemalagda aktiviteter -> Nytt -> schemalagda aktiviteter (minst Windows 7)

  • Datorkonfiguration -> Kontrollpanelsinställningar -> schemalagda aktiviteter -> Nytt -> omedelbar aktivitet (minst Windows 7)

  • Användarkonfiguration -> Kontrollpanelsinställningar -> schemalagda aktiviteter -> Nytt -> schemalagda aktiviteter (minst Windows 7)

  • Användarkonfiguration -> Kontrollpanelsinställningar -> schemalagda aktiviteter -> Nytt -> omedelbar aktivitet (minst Windows 7)

Viktiga ändringar

Åtgärd: Skapa, uppdatera eller ersätta

  • När du markerar alternativet Kör oavsett om användaren är inloggad eller inte uppmanas administratören autentiseringsuppgifter inte längre i en dialogruta.

  • Kryssrutan Spara inte lösenordet är inaktiverad. Som standard kontrolleras även rutan.




Åtgärd: ta bort

Ingen förändring i beteende

Lösningar


För den "schemalagda aktiviteten (minst Windows 7)" och "omedelbar aktivitet (minst Windows 7)" uppgifter, Administratörer kan använda specifika användarkonton när den angivna användaren är inloggad. Eller så kan de bara har tillgång till lokala resurser som användaren. Dessa uppgifter kan fortfarande köra inom ramen för den lokala tjänsten.



Scenario 5: Schemalagda och omedelbara aktiviteter (äldre)Detta är den äldre versionen av inställningar som används för att köra schemalagda aktiviteter i en viss kontext. Möjligheten att lagra autentiseringsuppgifter för schemalagda aktiviteter ska köras som en användare när användaren inte är inloggad är inte längre tillgänglig. Följande inställningar påverkas:

  • Datorkonfiguration -> Kontrollpanelen Inställningar -> schemalagda aktiviteter -> nya -> schemalagd aktivitet

  • Datorkonfiguration -> Kontrollpanelen Inställningar -> schemalagda aktiviteter -> Nytt -> omedelbar aktivitet (Windows XP)

  • Användarkonfiguration -> Kontrollpanelen Inställningar -> schemalagda aktiviteter -> nya -> schemalagd aktivitet

  • Användarkonfiguration -> Kontrollpanelen Inställningar -> schemalagda aktiviteter -> Nytt -> omedelbar aktivitet (Windows XP)

Viktiga ändringar

Åtgärd: Skapa, uppdatera eller ersätta

  • Kryssrutan Kör som är inaktiverad. Därför är fälten Användarnamn, lösenordoch Bekräfta lösenord alla inaktiverade.




Åtgärd: ta bort

Ingen förändring i beteende

Lösningar


"Aktivitet" och "Omedelbar aktivitet (Windows XP)"-objekt körs schemalagda aktiviteter med hjälp av behörigheter som är tillgängliga för den lokala tjänsten.


Scenario 6: Datakällor

Inställningen datakällor används för att koppla en datakälla till en dator eller användare. Den här funktionen lagras inte längre referenser om du vill aktivera åtkomst till datakällor som skyddas av ett lösenord. Följande inställningar påverkas:

  • Datorkonfiguration -> Kontrollpanelen Inställningar -> datakällor

  • Användarkonfiguration -> Kontrollpanelen Inställningar -> datakällor

Viktiga ändringar


Åtgärd: Skapa, uppdatera eller ersätta

  • Fält för Användarnamn, lösenordoch Bekräfta lösenord är inaktiverad:




Åtgärd: ta bort

  • Ingen förändring i beteende

Lösningar


Det finns inga lösningar. Den här inställningen lagras inte längre referenser om du vill tillåta åtkomst till datakällor som skyddas av ett lösenord.


Utfasningen av CPassword

Ta bort CPassword

Windows PowerShell-skript som ingår i den här Microsoft Knowledge Base-artikeln upptäcker om en domän innehåller alla inställningar för grupprincip som kan användas för CPassword. Om CPassword XML upptäcks i en viss inställning visas i listan.


Identifiera CPassword inställningar


Det här skriptet måste köras från en lokal katalog på den domänkontrollant som du vill rengöra. Kopiera och spara innehållet i en ny fil i Windows PowerShell, bestämma systemenheten och sedan köra skriptet som anges i följande användning.

<#.SYNOPSIS
Group Policy objects in your domain can have preferences that store passwords for different tasks, such as the following:
1. Data Sources
2. Drive Maps
3. Local Users
4. Scheduled Tasks (both XP and up-level)
5. Services
These passwords are stored in SYSVOL as part of GP preferences and are not secure because of weak encryption (32-byte AES).
Therefore, we recommend that you not deploy such preferences in your domain environment and remove any such existing
preferences. This script is to help administrator find GP Preferences in their domain's SYSVOL that contains passwords.

.DESCRIPTION
This script should be run on a DC or a client computer that is installed with RSAT to print all the preferences that contain
password with information such as GPO, Preference Name, GPEdit path under which this preference is defined.
After you have a list of affected preferences, these preferences can be removed by using the editor in the Group Policy Management Console.

.SYNTAX
Get-SettingsWithCPassword.ps1 [-Path <String>]
.EXAMPLE
Get-SettingsWithCPassword.ps1 -Path %WinDir%\SYSVOL\domain
Get-SettingsWithCPassword.ps1 -Path <GPO Backup Folder Path>

.NOTES
If Group Policy PS module is not found the output will contain GPO GUIDs instead of GPO names. You can either run
this script on a domain controller or rerun the script on the client after you have installed RSAT and
enabled the Group Policy module.
Or, you can use GPO GUIDs to obtain GPO names by using the Get-GPO cmdlet.

.LINK
http://go.microsoft.com/fwlink/?LinkID=390507

#>
#----------------------------------------------------------------------------------------------------------------
# Input parameters
#--------------------------------------------------------------------------------------------------------------
param(
[string]$Path = $(throw "-Path is required.") # Directory path where GPPs are located.
)
#---------------------------------------------------------------------------------------------------------------
$isGPModuleAvailable = $false
$impactedPrefs = { "Groups.xml", "ScheduledTasks.xml","Services.xml", "DataSources.xml", "Drives.xml" }
#----------------------------------------------------------------------------------------------------------------
# import Group olicy module if available
#----------------------------------------------------------------------------------------------------------------
if (-not (Get-Module -name "GroupPolicy"))
{
if (Get-Module -ListAvailable |
Where-Object { $_.Name -ieq "GroupPolicy" })
{
$isGPModuleAvailable = $true
Import-Module "GroupPolicy"
}
else
{
Write-Warning "Unable to import Group Policy module for PowerShell. Therefore, GPO guids will be reported.
Run this script on DC to obtain the GPO names, or use the Get-GPO cmdlet (on DC) to obtain the GPO name from GPO guid."
}
}
else
{
$isGPModuleAvailable = $true
}
Function Enum-SettingsWithCpassword ( [string]$sysvolLocation )
{
# GPMC tree paths
$commonPath = " -> Preferences -> Control Panel Settings -> "
$driveMapPath = " -> Preferences -> Windows Settings -> "

# Recursively obtain all the xml files within the SYVOL location
$impactedXmls = Get-ChildItem $sysvolLocation -Recurse -Filter "*.xml" | Where-Object { $impactedPrefs -cmatch $_.Name }


# Each xml file contains multiple preferences. Iterate through each preference to check whether it
# contains cpassword attribute and display it.
foreach ( $file in $impactedXmls )
{
$fileFullPath = $file.FullName

# Set GPP category. If file is located under Machine folder in SYSVOL
# the setting is defined under computer configuration otherwise the
# setting is a to user configuration
if ( $fileFullPath.Contains("Machine") )
{
$category = "Computer Configuration"
}
elseif ( $fileFullPath.Contains("User") )
{
$category = "User Configuration"
}
else
{
$category = "Unknown"
}
# Obtain file content as XML
try
{
[xml]$xmlFile = get-content $fileFullPath -ErrorAction Continue
}
catch [Exception]{
Write-Host $_.Exception.Message
}
if ($xmlFile -eq $null)
{
continue
}
switch ( $file.BaseName )
{
Groups
{
$gppWithCpassword = $xmlFile.SelectNodes("Groups/User") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }
$preferenceType = "Local Users"
}
ScheduledTasks
{
$gppWithCpassword = $xmlFile.SelectNodes("ScheduledTasks/*") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }
$preferenceType = "Scheduled Tasks"
}
DataSources
{
$gppWithCpassword = $xmlFile.SelectNodes("DataSources/DataSource") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }
$preferenceType = "Data sources"
}
Drives
{
$gppWithCpassword = $xmlFile.SelectNodes("Drives/Drive") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }
$preferenceType = "Drive Maps"
}
Services
{
$gppWithCpassword = $xmlFile.SelectNodes("NTServices/NTService") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }
$preferenceType = "Services"
}
default
{ # clear gppWithCpassword and preferenceType for next item.
try
{
Clear-Variable -Name gppWithCpassword -ErrorAction SilentlyContinue
Clear-Variable -Name preferenceType -ErrorAction SilentlyContinue
}
catch [Exception]{}
}
}
if ($gppWithCpassword -ne $null)
{
# Build GPO name from GUID extracted from filePath
$guidRegex = [regex]"\{(.*)\}"
$match = $guidRegex.match($fileFullPath)
if ($match.Success)
{
$gpoGuid = $match.groups[1].value
$gpoName = $gpoGuid
}
else
{
$gpoName = "Unknown"
}
if($isGPModuleAvailable -eq $true)
{
try
{
$gpoInfo = Get-GPO -Guid $gpoGuid -ErrorAction Continue
$gpoName = $gpoInfo.DisplayName
}
catch [Exception] {
Write-Host $_.Exception.Message
}
}
# display prefrences that contain cpassword
foreach ( $gpp in $gppWithCpassword )
{
if ( $preferenceType -eq "Drive Maps" )
{
$prefLocation = $category + $driveMapPath + $preferenceType
}
else
{
$prefLocation = $category + $commonPath + $preferenceType
}
$obj = New-Object -typeName PSObject
$obj | Add-Member –membertype NoteProperty –name GPOName –value ($gpoName) –passthru |
Add-Member -MemberType NoteProperty -name Preference -value ($gpp.Name) -passthru |
Add-Member -MemberType NoteProperty -name Path -value ($prefLocation)
Write-Output $obj
}
} # end if $gppWithCpassword
} # end foreach $file
} # end functions Enum-PoliciesWithCpassword
#-----------------------------------------------------------------------------------
# Check whether Path is valid. Enumerate all settings that contain cpassword.
#-----------------------------------------------------------------------------------
if (Test-Path $Path )
{
Enum-SettingsWithCpassword $Path
}
else
{
Write-Warning "No such directory: $Path"
}



Exempel på användning (förutsätter att enheten är C)

.\Get-SettingsWithCPassword.ps1 –path “C:\Windows\SYSVOL\domain” | Format-List
Obs!  Tänk på att du också rikta en säkerhetskopia av Grupprincipobjektet för sökvägen i en domän.

Identifieringsskriptet genererar en lista av följande slag:



Bör du spara utdata till en fil för längre listor:

.\Get-SettingsWithCPassword.ps1 –path “C:\Windows\SYSVOL\domain” | ConvertTo-Html > gpps.html

Ta bort CPassword inställningar

För att ta bort alternativ som innehåller data för CPassword, föreslår vi att du använder grupprincip konsolen Grupprinciphantering (GPMC) på domänkontrollanten eller från en klient som har verktyg för fjärrserveradministration installerat. Du kan ta bort valfri inställning i fem steg på dessa konsoler. Gör så här:

  1. Öppna den inställning som innehåller data för CPassword i GPMC.

  2. Ändra åtgärden att Ta bort eller Inaktiverasom gäller för inställningen.

  3. Klicka på OK om du vill spara dina ändringar.

  4. Vänta en eller två grupprincip uppdatera cykler att tillåta ändringar sprids till klienter.

  5. Ta bort inställningen när ändringar tillämpas på alla klienter.

  6. Upprepa steg 1 till 5 som behövs för att rensa hela miljön. Om identifieringsskriptet returnerar noll resultat, är du klar.

Filnamn

SHA1-hash

SHA256 hash

Windows6.0-KB2928120-ia64.msu

B2A74305CB56191774BFCF9FCDEAA983B26DC9A6

DCE8C0F9CEB97DBF1F7B9BAF76458B3770EF01C0EDC581621BC8C3B2C7FD14E7

Windows6.0-KB2928120-x64.msu

386457497682A2FB80BC93346D85A9C1BC38FBF7

1AF67EB12614F37F4AC327E7B5767AFA085FE676F6E81F0CED95D20393A1D38D

Windows6.0-KB2928120-x86.msu

42FF283781CEC9CE34EBF459CA1EFE011D5132C3

016D7E9DBBC5E487E397BE0147B590CFBBB5E83795B997894870EC10171E16D4

Windows6.1-KB2928120-ia64.msu

5C2196832EC94B99AAF9B074D3938525B7219690

9958FA58134F55487521243AD9740BEE0AC210AC290D45C8322E424B3E5EBF16

Windows6.1-KB2928120-x64.msu

EA5332F4E289DC799611EAB8E3EE2E86B7880A4B

417A2BA34F8FD367556812197E2395ED40D8B394F9224CDCBE8AB3939795EC2A

Windows6.1-KB2928120-x86.msu

7B7B6EE24CD8BE1AB3479F9E1CF9C98982C8BAB1

603206D44815EF2DC262016ED13D6569BE13D06E2C6029FB22621027788B8095

Windows8-RT-KB2928120-x64.msu

E18FC05B4CCA0E195E62FF0AE534BA39511A8593

FCAED97BF1D61F60802D397350380FADED71AED64435D3E9EAA4C0468D80141E

Windows8-RT-KB2928120-x86.msu

A5DFB34F3B9EAD9FA78C67DFC7ACACFA2FBEAC0B

7F00A72D8A15EB2CA70F7146A8014E39A71CFF5E39596F379ACD883239DABD41

Windows8.1-KB2928120-x64.msu

A07FF14EED24F3241D508C50E869540915134BB4

6641B1A9C95A7E4F0D5A247B9F488887AC94550B7F1D7B1198D5BCBA92F7A753

Windows8.1-KB2928120-x86.msu

DE84667EC79CBA2006892452660EB99580D27306

468EE4FA3A22DDE61D85FD3A9D0583F504105DF2F8256539051BC0B1EB713E9C

Windows8.1-KB2961899-x64.msu

10BAE807DB158978BCD5D8A7862BC6B3EF20038B

EC26618E23D9278FC1F02CA1F13BB289E1C6C4E0C8DA5D22E1D9CDA0DA8AFF51

Windows8.1-KB2961899-x86.msu

230C64447CC6E4AB3AD7B4D4655B8D8CEFBFBE98

E3FAD567AB6CA616E42873D3623A777185BE061232B952938A8846A974FFA7AF


Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.

Hade du nytta av den här informationen?

Hur nöjd är du med språkkvaliteten?
Vad påverkade din upplevelse?
Genom att trycka på skicka, kommer din feedback att användas för att förbättra Microsofts produkter och tjänster. IT-administratören kan samla in denna data. Sekretesspolicy.

Tack för din feedback!

×