РАЗДЕЛ
	about_Transactions

КРАТКОЕ ОПИСАНИЕ
	Описание способов управления операциями транзакций в Windows 
	PowerShell. 

ПОЛНОЕ ОПИСАНИЕ
	Транзакции поддерживаются в Windows PowerShell начиная с версии 
	Windows PowerShell 2.0. Эта функция позволяет начинать 
	транзакции, указывать команды, входящие в транзакции, и 
	фиксировать или откатывать транзакции.


  О ТРАНЗАКЦИЯХ

	Транзакция в Windows PowerShell - это набор из одной или 
	нескольких команд, которыми можно управлять как логическим 
	блоком. При выполнении ("фиксации") транзакции изменяются 
	данные, на которые повлияла транзакция. Транзакцию также можно 
	полностью отменить ("откатить"), не изменяя этой транзакцией 
	данные, на которые она могла бы повлиять. 

	Поскольку команды в транзакции рассматриваются как единый блок, 
	либо все команды фиксируются, либо все команды откатываются. 

	Транзакции широко используются в обработке данных, особенно при 
	операциях с базами данных и для финансовых транзакций. Чаще 
	всего транзакции используются, если худшим вариантом для набора 
	команд является не ошибка всех команд, а успешное выполнение 
	лишь части из них, сопровождаемое ошибками других, приводящими 
	систему в поврежденное, некорректное или нечитаемое состояние, 
	которое трудно исправить.

		
  КОМАНДЛЕТЫ ДЛЯ ТРАНЗАКЦИЙ

	В Windows PowerShell включено несколько командлетов, 
	предназначенных для работы с транзакциями.

	Командлет			Описание
	--------------		 ---------------------------------   
	Start-Transaction	Запускает новую транзакцию. 

	Use-Transaction		Добавляет в транзакцию команду 
							 или выражение. Команда должна 
							 использовать объекты, поддерживающие 
							 транзакции.

	Undo-Transaction	 Откатывает транзакцию, не изменяя 
							 транзакцией данные.

	Complete-Transaction   Фиксирует транзакцию. Изменяет данные, 
							 на которые влияет транзакция.

	Get-Transaction		Возвращает сведения об активной транзакции.


	Чтобы вывести список командлетов транзакции, введите следующую 
	команду:

		get-command *transaction

	Чтобы получить дополнительные сведения о командлетах, введите 
	следующую команду:

		get-help <имя_командлета> -detailed

	Пример:
	
		get-help use-transaction -detailed


  ЭЛЕМЕНТЫ, ПОДДЕРЖИВАЮЩИЕ ТРАНЗАКЦИИ

	Для участия в транзакции и командлет, и поставщик должны 
	поддерживать транзакции. Эта функция встроена в объекты, на 
	которые влияет транзакция.
   
	Поставщик Windows PowerShell Registry поддерживает транзакции в 
	Windows Vista. Объект TransactedString 
	(Microsoft.PowerShell.Commands.Management.TransactedString) работает 
	в любой операционной системе, где установлена оболочка Windows 
	PowerShell. 

	Другие поставщики Windows PowerShell могут поддерживать 
	транзакции. Узнать, какие поставщики Windows PowerShell в 
	текущем сеансе поддерживают транзакции, можно с помощью 
	следующей команды, возвращающей значение "Transactions" 
	свойства поставщиков Capabilities:

		get-psprovider | where {$_.Capabilities -like "*transactions*"}

	Дополнительные сведения о поставщиках см. в справке об этих 
	поставщиках.
	Для получения справки по поставщику введите следующую команду:

		get-help <имя-поставщика>

	Например, чтобы получить справку для поставщика Registry, 
	введите следующую команду:

		get-help registry
  


  ПАРАМЕТР USETRANSACTION

	Командлеты, поддерживающие транзакции, имеют параметр 
	UseTransaction. Этот параметр  включает команду в активную 
	транзакцию. Можно использовать полное имя параметра или его 
	псевдоним "usetx".

	Этот параметр можно использовать только при наличии в сеансе 
	активной транзакции. Если активной транзакции нет, команда, 
	введенная с параметром UseTransaction, завершится ошибкой.

	Чтобы найти командлеты с параметром UseTransaction, введите 
	следующую команду:

		get-help * -parameter UseTransaction  

	Все основные командлеты Windows PowerShell, предназначенные для 
	работы с поставщиками Windows PowerShell, поддерживают транзакции. 
	Поэтому для управления транзакциями можно пользоваться 
	командлетами поставщика. 

	Дополнительные сведения о поставщиках Windows PowerShell см в 
	разделе about_Providers.  
 

  ОБЪЕКТ ТРАНЗАКЦИИ

	Транзакции в Windows PowerShell представлены объектом транзакции 
	System.Management.Automation.Transaction.

	Этот объект имеет следующие свойства.

	RollbackPreference. 
		Содержит параметр отката, установленный для текущей 
		транзакции. Параметр отката можно установить при использовании 
		командлета Start-Transaction для запуска транзакции. 

		Параметр отката определяет условия, при которых транзакция 
		откатывается автоматически. Допустимые значения Error, 
		TerminatingError и Never. По умолчанию используется 
		значение Error.

	Status.		
		 Содержит текущее состояние транзакции. Допустимые значения 
		 Active, Committed и RolledBack.


	SubscriberCount.		
		 Содержит количество подписчиков этой транзакции. Подписчик 
		 добавляется в транзакцию, запускаемую во время выполнения другой 
		 транзакции. При фиксации транзакции подписчиком количество подписчиков 
		 уменьшается.


  АКТИВНЫЕ ТРАНЗАКЦИИ

	В Windows PowerShell в каждый момент времени активна только 
	одна транзакция и управлять можно только одной активной 
	транзакцией. В один сеанс одновременно может выполняться несколько 
	транзакций, но активна только транзакция, запущенная последней. 

	Поэтому при использовании командлетов транзакций нельзя выбирать 
	определенные транзакции. Команды всегда применяются к активной транзакции.

	Это хорошо иллюстрирует поведение командлета Get-Transaction. 
	Команда Get-Transaction при вводе всегда возвращает только один 
	объект транзакции. Этот объект представляет активную транзакцию. 

	Для управления другой транзакцией нужно сначала закончить активную 
	транзакцию, зафиксировав или откатив ее. После этого предыдущая транзакция 
	автоматически становится активной. Транзакции становятся активным в 
	порядке, обратном запуску, то есть транзакция, запущенная последней, 
	всегда активна.


  ПОДПИСЧИКИ И НЕЗАВИСИМЫЕ ТРАНЗАКЦИИ

	При запуске транзакции во время выполнения другой транзакции Windows 
	PowerShell по умолчанию не запускает новую транзакцию. Вместо этого в 
	текущую транзакцию добавляется "подписчик".

	Если у транзакции несколько подписчиков, одна команда 
	Undo-Transaction в любой момент откатывает всю транзакцию для всех 
	подписчиков. При этом для фиксации транзакции необходимо ввести по 
	одной команде Complete-Transaction для каждого подписчика.

	Чтобы узнать количество подписчиков в транзакции, проверьте свойство 
	SubscriberCount объекта транзакции. Например, следующая команда использует 
	командлет Get-Transaction, чтобы вернуть значение свойства SubscriberCount 
	активной транзакции:

		(Get-Transaction).SubscriberCount
	
	Добавление подписчика - поведение по умолчанию, потому что 
	большинство транзакций, запускаемых при выполнении другой 
	транзакции, связаны с этой исходной транзакцией. В обычной 
	ситуации скрипт, содержащий транзакцию, вызывает вспомогательный
	скрипт, содержащий собственную транзакцию. Эти транзакции 
	связаны, поэтому их нужно откатывать или фиксировать единым блоком.

	Однако с помощью параметра Independent командлета Start-Transaction 
	можно запустить транзакцию, независимую от текущей.

	При запуске независимой транзакции командлет Start-Transaction 
	создает новый объект транзакции и новая транзакция становится 
	активной. Независимую транзакцию можно зафиксировать или 
	откатить, не затрагивая первоначальную транзакцию.

	По завершении (фиксации или отката) независимой транзакции 
	первоначальная транзакция снова становится активной.


  ИЗМЕНЕНИЕ ДАННЫХ

	При использовании транзакций для изменения данных данные, на 
	которые влияет транзакция, не изменяются до фиксации транзакции.
	Однако те же данные можно изменять с помощью команд, не входящих в 
	транзакцию. 

	Об этом следует помнить при использовании транзакций для 
	управления общими данными. Обычно у баз данных есть механизмы, 
	блокирующие данные при работе с ними, чтобы их не могли 
	изменить другие пользователи, команды, скрипты и функции.

	Однако блокирование обеспечивается базой данных. Оно не связано с 
	транзакциями. При работе в файловой системе или другом хранилище данных, 
	поддерживающем транзакции, данные могут изменяться во время 
	выполнения транзакции.


ПРИМЕРЫ
	Примеры в данном разделе используют поставщик Windows PowerShell 
	Registry, поэтому предполагается, что вы с ним знакомы. Чтобы получить 
	сведения о поставщике Registry, введите команду "get-help registry".

  ПРИМЕР 1: ФИКСАЦИЯ ТРАНЗАКЦИИ

	Чтобы создать транзакцию, используйте командлет Start-Transaction.
	Следующая команда запускает транзакцию с параметрами по умолчанию.
 
		start-transaction

	Для включения в транзакцию команд используется параметр командлета 
	UseTransaction. По умолчанию команды не включаются в транзакцию. 

	Например, следующая команда, назначающая текущим расположением 
	раздел Software на диске HKCU:, не включена в транзакцию.

		cd hkcu:\Software

	Следующая команда, создающая раздел MyCompany, использует параметр 
	UseTransaction командлета New-Item, чтобы включить команду в активную 
	транзакцию.

		new-item MyCompany -UseTransaction

	Команда возвращает объект, представляющий новый раздел, но реестр 
	еще не изменяется, потому что команда входит в транзакцию.

		Hive: HKEY_CURRENT_USER\Software

		SKC  VC Name						 Property
		---  -- ----						 --------
		0   0 MyCompany					{}

	Чтобы зафиксировать транзакцию, используйте командлет Complete-Transaction.
	Транзакцию указать нельзя, потому что командлет всегда влияет на 
	активную транзакцию.

		complete-transaction  


	В результате в реестр добавляется раздел MyCompany..

		dir m*
	 
		Hive: HKEY_CURRENT_USER\software

		SKC  VC Name						 Property
		---  -- ----						 --------
		 83   1 Microsoft					{(default)}
		0   0 MyCompany					{}


  ПРИМЕР 2: ОТКАТ ТРАНЗАКЦИИ

	Чтобы создать транзакцию, используйте командлет Start-Transaction.
	Следующая команда запускает транзакцию с параметрами по умолчанию.
 
		start-transaction

	Следующая команда, создающая раздел MyOtherCompany, использует 
	параметр UseTransaction командлета New-Item, чтобы включить 
	команду в активную транзакцию.

		new-item MyOtherCompany -UseTransaction

	Команда возвращает объект, представляющий новый раздел, но реестр 
	еще не изменяется, потому что команда входит в транзакцию.

		Hive: HKEY_CURRENT_USER\Software

		SKC  VC Name						 Property
		---  -- ----						 --------
		0   0 MyOtherCompany				 {}


	Чтобы откатить транзакцию, используйте командлет Undo-Transaction.
	Транзакция не указывается, потому что командлет всегда влияет на 
	активную транзакцию.

		Undo-transaction  

	В результате раздел MyOtherCompany не добавляется в реестр.

		dir m*
	 
		Hive: HKEY_CURRENT_USER\software

		SKC  VC Name						 Property
		---  -- ----						 --------
		 83   1 Microsoft					{(default)}
		0   0 MyCompany					{}


 
  ПРИМЕР 3: ПРЕДВАРИТЕЛЬНЫЙ ПРОСМОТР ТРАНЗАКЦИИ

	Обычно команды, использующиеся в транзакции, изменяют данные. Но 
	команды, возвращающие данные, тоже полезны в транзакции, потому 
	что они возвращают данные внутри транзакции. Это позволяет 
	узнать, как будут выглядеть изменения после фиксации транзакции.

	В следующем примере показано использование команды Get-ChildItem 
	(ее псевдоним "dir") для предварительного просмотра изменений в 
	транзакции.


	Следующая команда запускает транзакцию.

		start-transaction

	Следующая команда использует командлет New-ItemProperty, чтобы 
	добавить в раздел MyCompany запись реестра MyKey. Команда 
	использует параметр UseTransaction для включения команды в транзакцию.


		new-itemproperty -path MyCompany -Name MyKey -value 123 -UseTransaction

	Команда возвращает объект, представляющий новую запись реестра, 
	но не изменяет саму запись реестра.

		MyKey
		-----
		123


	Для получения текущих элементов в реестре используйте команду 
	Get-ChildItem ("dir") без параметра UseTransaction. Следующая команда 
	возвращает элементы, начинающиеся на "M".

		dir m*


	В результатах показано, что в раздел MyCompany записи еще не 
	добавлены.

		Hive: HKEY_CURRENT_USER\Software

		SKC  VC Name						 Property
		---  -- ----						 --------
		83   1 Microsoft					{(default)}
		 0   0 MyCompany					{}


	Чтобы узнать, как будет выглядеть эффект от фиксации транзакции, 
	введите команду Get-ChildItem ("dir") с параметром UseTransaction.
	Эта команда содержит представление данных из транзакции.


		dir m* -useTransaction


	В результатах показано, что при фиксации транзакции в раздел 
	MyCompany будет добавлена запись MyKey.


		Hive: HKEY_CURRENT_USER\Software

		SKC  VC Name						 Property
		---  -- ----						 --------
		83   1 Microsoft					{(default)}
		 0   1 MyCompany					{MyKey}


	 
  ПРИМЕР 4: ОБЪЕДИНЕНИЕ КОМАНД В РАМКАХ ТРАНЗАКЦИЙ И ВНЕ ТРАНЗАКЦИЙ

	Во время транзакции можно вводить команды, не входящие в 
	транзакцию. Команды, не входящие в транзакцию, влияют на данные 
	немедленно, но не влияют на транзакцию.

	Следующая команда запускает транзакцию в разделе реестра 
	HKCU:\Software.

		start-transaction


	Три следующие команды добавляют в реестр разделы с помощью 
	командлета New-Item. Первая и третья команды включаются в 
	транзакцию с помощью параметра UseTransaction. Во второй команде 
	этот параметр опускается. Поскольку вторая команда не входит в 
	транзакцию, она действует немедленно.

		new-item MyCompany1 -UseTransaction

		new-item MyCompany2

		new-item MyCompany3 -UseTransaction


	Для просмотра текущего состояния реестра используйте команду 
	Get-ChildItem ("dir") без параметра UseTransaction. Эта команда 
	возвращает элементы, начинающиеся на "M".

		dir m*

	В результатах показано, что раздел MyCompany2 добавлен в реестр, 
	а разделы MyCompany1 и MyCompany3, которые являются частью 
	транзакцию, не добавлены.
	 
		Hive: HKEY_CURRENT_USER\Software

		SKC  VC Name						 Property
		---  -- ----						 --------
		83   1 Microsoft					{(default)}
		 0   0 MyCompany2					 {}


	Следующая команда фиксирует транзакцию. 

		complete-transaction

	Теперь разделы, добавленные как часть транзакции, появятся в реестре.

		dir m*

	 
		Hive: HKEY_CURRENT_USER\Software

		SKC  VC Name						 Property
		---  -- ----						 --------
		83   1 Microsoft					{(default)}
		0	0 MyCompany1					 {}
		0	0 MyCompany2					 {}
		0	0 MyCompany3					 {}


  ПРИМЕР 5: ИСПОЛЬЗОВАНИЕ АВТОМАТИЧЕСКОГО ОТКАТА

	Если команда в транзакции выдает какую-либо ошибку, транзакция 
	автоматически откатывается. 

	Это поведение по умолчанию предназначено для скриптов, выполняющих 
	транзакции. Скрипты обычно тщательно тестируются и содержат логику 
	обработки ошибок, поэтому ошибки не ожидаются и должны 
	прерывать транзакцию. 

	Первая команда запускает транзакцию в разделе реестра HKCU:\Software.

		start-transaction

	Следующая команда использует командлет New-Item, чтобы добавить в 
	реестр раздел MyCompany. Команда использует параметр 
	UseTransaction (псевдоним - "usetx") для включения команды в 
	транзакцию.

		New-Item MyCompany -UseTX

	Так как раздел MyCompany уже есть в реестре, команда завершается 
	неудачей и выполняется откат транзакции. 

		New-Item : раздел по этому пути уже существует В строке:1 знак:9
		+ new-item <<<< MyCompany -usetx

	Команда Get-Transaction подтверждает, что выполнен откат 
	транзакции и что количество подписчиков равно 0.

		RollbackPreference:  SubscriberCount:  Status
		------------------   ---------------   ------
		Error				0				 RolledBack 


	
  ПРИМЕР 6: ИЗМЕНЕНИЕ ПАРАМЕТРА ОТКАТА

	Если нужно, чтобы транзакция была менее чувствительна к ошибкам, можно 
	использовать параметр RollbackPreference командлета Start-Transaction,
	чтобы изменить параметр отката.

	Следующая команда запускает транзакцию с параметром отката "Never".

		 start-transaction -rollbackpreference Never

	В этом случае при ошибке команды транзакция не откатывается 
	автоматически.

		New-Item MyCompany -UseTX

		New-Item : раздел по этому пути уже существует В строке:1 знак:9
		+ new-item <<<< MyCompany -usetx
   
	 
	Так как транзакция еще активна, команду можно повторно ввести как 
	часть транзакции. 

		New-Item MyOtherCompany -UseTX



  ПРИМЕР 7: ИСПОЛЬЗОВАНИЕ КОМАНДЛЕТА USE-TRANSACTION

	Командлет Use-Transaction позволяет непосредственно выполнять 
	скрипты над поддерживающими транзакции объектами Microsoft .NET 
	Framework.
	Use-Transaction принимает блок скрипта, который может содержать 
	только команды и выражения, использующие объекты .NET Framework, 
	поддерживающие транзакции, такие как экземпляры класса 
	Microsoft.PowerShell.Commands.Management.TransactedString.

	Следующая команда запускает транзакцию.

		 start-transaction

	Следующая команда New-Object создает экземпляр класса 
	TransactedString и сохраняет его в переменной $t.

		 $t = New-Object Microsoft.PowerShell.Commands.Management.TransactedString

	Следующая команда с помощью метода Append объекта TransactedString
	 добавляет текст к строке. Поскольку команда не является частью 
	 транзакции, изменение вступает в силу немедленно.

		 $t.append("Windows") 

	Следующая команда использует для добавления текста тот же метод 
	Append, но добавляет текст как часть транзакции. Команда 
	заключена в фигурные скобки и устанавливается как значение параметра 
	ScriptBlock командлета Use-Transaction. Параметр UseTransaction 
	(UseTx) является обязательным.

		 use-transaction {$t.append(" PowerShell")} -usetx

	Для просмотра текущего содержимого в $t строки, над которой 
	выполняется транзакция, используйте метод ToString объекта 
	TransactedString.
				 
		 $t.tostring()   

	В выходных данных показано, что имеют силу только изменения, не 
	связанные с транзакцией.

		 Windows	

	Для просмотра текущего содержимого в $t строки, над которой 
	выполняется транзакция, из транзакции, внедрите выражение в 
	команду Use-Transaction. 

		 use-transaction {$s.tostring()} -usetx   

	В выходных данных показано представление транзакции.

		 Windows PowerShell

	Следующая команда фиксирует транзакцию.

		 complete-transaction

	Для просмотра итоговой строки введите:

		 $t.tostring()
	
		 Windows PowerShell


  ПРИМЕР 7: УПРАВЛЕНИЕ ТРАНЗАКЦИЯМИ С НЕСКОЛЬКИМИ ПОДПИСЧИКАМИ

	При запуске транзакции во время выполнения другой транзакции Windows 
	PowerShell по умолчанию не создает вторую транзакцию. Вместо этого в 
	текущую транзакцию добавляется подписчик. 

	В этом примере показано, как просматривать и управлять транзакциями с 
	несколькими подписчиками.

	Сначала нужно запустить транзакцию в разделе HKCU:\Software.
	
		start-transaction

	Следующая команда с помощью команды Get-Transaction получает активную 
	транзакцию.

		get-transaction


	Результат показывает объект, представляющий активную транзакцию.

		RollbackPreference:  SubscriberCount:  Status
		------------------   ---------------   ------
		Error				1				 Active 
	 
	Следующая команда добавляет в реестр раздел MyCompany.
	Команда использует параметр UseTransaction для включения команды 
	в транзакцию.
				 
		new-item MyCompany -UseTransaction


	Следующая команда запускает транзакцию с помощью команды 
	Start-Transaction. Хотя эта команда введена в командную строку, 
	скорее всего события будут разворачиваться таким образом при 
	выполнении скрипта, содержащего транзакцию.

		start-transaction


	Команда Get-Transaction показывает, что количество подписчиков объекта 
	транзакции увеличилось. Новое значение - 2.   

		RollbackPreference:  SubscriberCount:  Status
		------------------   ---------------   ------
		Error				2				 Active 

	Следующая команда использует командлет New-ItemProperty, чтобы 
	добавить в раздел MyCompany запись реестра MyKey. Она использует 
	параметр UseTransaction для включения команды в транзакцию.

		new-itemproperty -path MyCompany -name MyKey -UseTransaction


	Раздела MyCompany в реестре нет, но команда выполняется успешно, 
	потому что эти две команды - часть одной транзакции.

	Следующая команда фиксирует транзакцию. Если бы она откатила 
	транзакцию, откат транзакции был бы выполнен для всех подписчиков.

		complete-transaction


	Команда Get-Transaction показывает, что количество подписчиков объекта 
	транзакции равно 1, но значение Status все еще Active (а не Committed).   


		RollbackPreference:  SubscriberCount:  Status
		------------------   ---------------   ------
		Error				1				 Active 


	Для завершения фиксации транзакции введите вторую команду Complete-
	Transaction. Чтобы зафиксировать транзакцию с несколькими 
	подписчиками, необходимо ввести по одной команде Complete-Transaction 
	для каждой команды Start-Transaction.

		complete-transaction


	Еще одна команда Get-Transaction показывает, что транзакция 
	зафиксирована.


		RollbackPreference:  SubscriberCount:  Status
		------------------   ---------------   ------
		Error				0				 Committed 

  ПРИМЕР 8: УПРАВЛЕНИЕ НЕЗАВИСИМЫМИ ТРАНЗАКЦИЯМИ

	При запуске транзакции во время выполнения другой транзакции можно 
	использовать параметр Independent командлета Start-Transaction, чтобы 
	новая транзакция была независима от первоначальной.

	При этом командлет Start-Transaction создает новый объект 
	транзакции и новая транзакция становится активной.

	Сначала нужно запустить транзакцию в разделе HKCU:\Software.
	
		start-transaction
	 
	Следующая команда с помощью команды Get-Transaction получает активную 
	транзакцию.

		get-transaction


	Результат показывает объект, представляющий активную транзакцию.

		RollbackPreference:  SubscriberCount:  Status
		------------------   ---------------   ------
		Error				1				 Active 
	 
	Следующая команда добавляет раздел реестра MyCompany в состав 
	транзакции. Она использует параметр UseTransaction (UseTx) для 
	включения команды в активную транзакцию.

		new-item MyCompany -use


	Следующая команда запускает новую транзакцию. Команда использует 
	параметр Independent, означающий, что эта транзакция не является 
	подписчиком активной транзакции.

		 start-transaction -independent

	При создании независимой транзакции новая (созданная последней) 
	транзакция становится активной. С помощью команды Get-Transaction 
	можно получить активную транзакцию. 

		get-transaction

	Обратите внимание, что количество подписчиков транзакции равно 1, 
	то есть других подписчиков нет и транзакция новая.

		RollbackPreference:  SubscriberCount:  Status
		------------------   ---------------   ------
		Error				1				 Active 

	Новую транзакцию нужно завершить (зафиксировать или откатить) 
	перед тем, как управлять первоначальной транзакцией.

	Следующая команда добавляет в реестр раздел MyOtherCompany.
	Она использует параметр UseTransaction (UseTx) для включения команды в 
	активную транзакцию.

		new-item MyOtherCompany -usetx

	Теперь откатим транзакцию. Если бы это была одна транзакция с двумя 
	подписчиками, откат транзакции откатил бы всю транзакцию для всех 
	подписчиков.

	Однако из-за того, что транзакции независимы, откат последней 
	транзакции отменяет изменения реестра, а первоначальная 
	транзакция становится активной.

		undo-transaction

	Команда Get-Transaction подтверждает, что первоначальная 
	транзакция в этом сеансе все еще активна.


		get-transaction

		RollbackPreference:  SubscriberCount:  Status
		------------------   ---------------   ------
		Error				1				 Active 

	Следующая команда фиксирует активную транзакцию.

		complete-transaction


	Команда Get-ChildItem показывает, что реестр изменен.

		dir m*


		Hive: HKEY_CURRENT_USER\Software

		SKC  VC Name						 Property
		---  -- ----						 --------
		83   1 Microsoft					{(default)}
		 0   0 MyCompany					{}

СМ. ТАКЖЕ
	Start-Transaction
	Get-Transaction
	Complete-Transaction
	Undo-Transaction
	Use-Transaction
	Registry (поставщик)
	about_Providers
	Get-PSProvider
	Get-ChildItem