ユーザーディレクトリをループし、XMLドキュメントを変更してアプリケーションの設定を変更するスクリプトを作成しました。通常、foreach
を使用すると、コレクションから変数= 1アイテムになります。代わりに、このスクリプトは$XMLPaths
のすべてを私の$Path
変数に入れています。Powershellを使用したForeachを使用した複数のXMLドキュメントの変更
$XMLPaths = Get-ChildItem \\DFSRoot\DFSShare\view\Profiles\*\AppData\Roaming\Trillian\ -Recurse -Force |
Where-Object {$_.Name -contains 'Events.xml'} |
Select FullName |
FT -HideTableHeaders |
Out-String
foreach ($Path in $XMLPaths) {
$xml = [xml](Get-Content $Path)
$node = $xml.events.prefs.setting | Where {$_.Name -eq 'Sounds'}
$node.value = '1'
$XML.Save($Path)
$Path
$node
}
ここに私が使用しているXML文書があります。唯一の代わりに、これを持っている時点で、その中に一つのディレクトリを持っている必要があり
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE events
PUBLIC "--//IETF//DTD RFCxxxx XEVENTS 1.0//EN" "xevents.dtd">
<!-- WARNING: This is a generated file by Trillian. Do not update while -->
<!-- Trillian is running otherwise updates will be erased -->
<events>
<version>1.0</version>
<Prefs>
<setting name="idle" value="1"/>
<setting name="sounds" value="1"/>
<setting name="sounds_away" value="1"/>
<setting name="sounds_suppress" value="1"/>
<setting name="automatic_outbound" value="1"/>
<setting name="hide_disabled" value="1"/>
<setting name="video_capture" value="1"/>
<setting name="buzz_sound" value="1"/>
<setting name="game_status" value="0"/>
<setting name="awaymessage_song" value="0"/>
<setting name="awaymessage_autosave" value="1"/>
<setting name="awaymessage_update2" value="1"/>
<setting name="away_autoresponse" value="0"/>
</Prefs>
<AwayList>
<AwayGroup name="Root">
<AwayMessage label="Set%20all%20Do%20Not%20Disturb" text="" awayState="1" awayMenu="1" autoRespond="0" system="1">
<Status medium="ASTRA" type="Do%20Not%20Disturb"/>
</AwayMessage>
<AwayMessage label="Set%20all%20Offline" text="" awayState="1" awayMenu="0" autoRespond="1" system="1">
<Status medium="ASTRA" type="Offline"/>
</AwayMessage>
<AwayMessage label="Set%20all%20Away" text="Away%20since%20%25time%25%20%28%25timeZoneOffset%25%29" awayState="1" awayMenu="1" autoRespond="1" system="1">
<Status medium="ASTRA" type="Away"/>
</AwayMessage>
<AwayMessage label="Set%20all%20Invisible" text="" awayState="1" awayMenu="1" autoRespond="0" system="1">
<Status medium="ASTRA" type="Invisible"/>
</AwayMessage>
<AwayMessage label="Set%20all%20Back" text="" awayState="0" awayMenu="1" autoRespond="0" system="1">
<Status medium="ASTRA" type="Online"/>
</AwayMessage>
<AwayMessage label="Set%20all%20Idle" text="Idle%20since%20%25time%25%20%28%25timeZoneOffset%25%29" awayState="1" awayMenu="0" autoRespond="1" system="1">
<Status medium="ASTRA" type="Away"/>
</AwayMessage>
</AwayGroup>
</AwayList>
</events>
変数$Path
。
\\DFSROOT\DFSSHare\view\Profiles\User1\AppData\Roaming\Trillian\users\User1\Events.xml \\DFSROOT\DFSSHare\view\Profiles\User2\AppData\Roaming\Trillian\users\User2\Events.xml \\DFSROOT\DFSSHare\view\Profiles\User3\AppData\Roaming\Trillian\users\User3\Events.xml \\DFSROOT\DFSSHare\view\Profiles\User4\AppData\Roaming\Trillian\users\User4\Events.xml \\DFSROOT\DFSSHare\view\Profiles\User5\AppData\Roaming\Trillian\users\User5\Events.xml
パイプラインの中間ステップとして 'Format-Table'を使用しないでください。 – PetSerAl
結果が文字列であることを実際に意図しない限り、 'Out-String'も使用しないでください。 –