I'm am trying to do this in PowerShell:
XDocument document = XDocument.Load(@"web.config");
var comments = document.Descendants("client").DescendantNodes().OfType<XComment>().ToArray();
foreach (var comment in comments)
{
XElement unCommented = XElement.Parse(comment.Value);
comment.ReplaceWith(unCommented);
}
I've tried something like this:
$xDoc = [System.Xml.Linq.XDocument]::Load("web.config")
[System.Collections.Generic.IEnumerable[System.Xml.Linq.XElement]] $enum = $xDoc.Descendants("client")
$clients = [System.Xml.Linq.Extensions]::DescendantNodes($enum)
But I am getting an error saying
Exception calling DescendantNodes with 1 argument(s): value cannot be null
I got this to work, (uncommenting something from an xml document) using linq in powershell:
[Reflection.Assembly]::LoadWithPartialName("System.Xml.Linq") | Out-Null
$xDoc = [System.Xml.Linq.XDocument]::Load("web.config")
$endpoints = $xDoc.Descendants("client") | foreach { $_.DescendantNodes()}
$comments = $endpoints | Where-Object { $_.NodeType -eq [System.Xml.XmlNodeType]::Comment -and $_.Value -match "net.tcp://localhost:9876/RaceDayService" }
$comments | foreach { $_.ReplaceWith([System.Xml.Linq.XElement]::Parse($_.Value)) }
$xDoc.Save("web.config")
If you were to write PowerShell Modules, you'd create a Manifest file, which would have similar dependencies loaded upon Import-Module MyModule
call:
# Comma-separated assemblies that must be loaded prior to importing this module
RequiredAssemblies = @("System.Xml.Linq")
This is the recommended way for those who write modules.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With