Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: ✔️ Windows-VMs
In diesem Artikel wird erläutert, wie Sie einen Fehler in einem PowerShell-Skript testen und korrigieren, das das Feature "Custom Script Extension" oder "Run Command" verwendet.
Voraussetzungen
Übersicht
Gehen Sie davon aus, dass Sie das Feature "Benutzerdefinierte Skripterweiterung " oder "Befehl ausführen" zum Ausführen eines PowerShell-Skripts verwendet haben. Was tun Sie, wenn das Skript fehlschlägt? Sie haben mehrere verfügbare Methoden, um die Ursache des Fehlers zu ermitteln.
PowerShell verfügt über mehrere Ausgabedatenströme. Protokolle für benutzerdefinierte Skripterweiterungen und Run Command-Skripts senden den Erfolgsdatenstrom an den StdOut
Unterstatus und den Fehlerdatenstrom an den StdErr
Unterstatus. Diese Unterstatus gehören zu der Erweiterung, die zum Ausführen des Skripts für die benutzerdefinierte Skripterweiterung oder zum Ausführen des Befehlsskripts verwendet wurde.
Die StdOut
Und StdErr
Unterstatus befinden sich in der CRP-Instanzansicht (Certificate Registration Point) für den virtuellen Computer (VM). Diese Unterstatus sind an mehreren Speicherorten pro der folgenden Tabelle sichtbar.
Schnittstelle | So zeigen Sie den Unterstatus an |
---|---|
Azure-Portal |
|
Azure PowerShell | Geben Sie das Cmdlet "Get-AzVM " ein, um die Eigenschaften eines virtuellen Azure-Computers wie folgt abzurufen:Get-AzVM -ResourceGroupName <resource-group-name> -Name <vm-name> -Status |
Azure CLI | Geben Sie den Befehl "az vm get-instance-view" ein, um Instanzinformationen zu einer Azure-VM wie folgt abzurufen:az vm get-instance-view --resource-group <resource-group-name> --name <vm-name> --query instanceView.extensions |
Der Fehler, der normalerweise dazu führt, dass das Skript fehlschlägt, wird im StdErr
Unterstatus angezeigt. Skripts können jedoch auch fehlschlagen, ohne einen schwerwiegenden Fehlereintrag in diesem Unterstatus zu protokollieren.
Manuelles Testen des Skripts und mithilfe von PsExec
Stellen Sie manuell sicher, dass das Skript erfolgreich über eine Administrative PowerShell-Konsole auf dem virtuellen Computer ausgeführt wird.
Wenn das Skript manuell funktioniert, verwenden Sie PsExec, um das Skript mithilfe des lokalen Systemkontos auszuführen. Für benutzerdefinierte Skripterweiterung und Befehl ausführen werden Skripts mithilfe dieses Kontos ausgeführt. Durch Eingabe psexec -s
können Sie das Skript mithilfe des lokalen Systemkontos testen, jedoch ohne benutzerdefinierte Skripterweiterung oder Befehl ausführen. Wenn der Fehler mithilfe psexec -s
des Fehlers reproduziert wird, sind benutzerdefinierte Skripterweiterung und Run Command nicht die Ursache des Problems.
Testen mithilfe von PsExec
Sie können PsExec verwenden, um ein PowerShell-Testskript remote auszuführen. Öffnen Sie ein Administrator-Eingabeaufforderungsfenster, und geben Sie dann den folgenden PsExec-Befehl ein. Ersetzen Sie den Platzhalter durch den vollqualifizierten Namen des PowerShell-Skripts:
psexec -accepteula -nobanner -s powershell.exe -NoLogo -NoProfile -File <C:\path\script-name.ps1>
Alternativ können Sie PsExec interaktiv verwenden. Im folgenden Beispiel geben Sie den Whoami-Befehl ein, um anzuzeigen, dass PowerShell unter dem Lokalen Systemkonto (NT AUTHORITY\SYSTEM
) ausgeführt wird:
C:\>psexec -accepteula -nobanner -s powershell.exe -NoLogo -NoProfile
PS C:\Windows\system32> whoami
nt authority\system
Aktivieren der Protokollierung der PowerShell-Skriptausführung
Wenn der StdErr
Unterstatus die Ursache des Problems nicht anzeigt, können Sie mehrere Protokollierungstypen aktivieren, um den Skriptinhalt und die Ausgabe zusammen anzuzeigen. Diese Protokollierung zeigt, was das Skript zu erreichen versucht, und das Ergebnis der Ausführung des Skripts.
Führen Sie die Schritte in den nächsten Abschnitten aus, um verschiedene Protokollierungstypen zu aktivieren.
Warnung
Einige der Anweisungen umfassen das Ändern der Windows-Registrierung. Schwerwiegende Probleme können auftreten, wenn die Registrierung mit dem Registrierungs-Editor oder einer anderen Methode unsachgemäß bearbeitet wird. Aufgrund dieser Probleme kann eine Neuinstallation des Betriebssystems erforderlich sein. Microsoft kann nicht garantieren, dass diese Probleme behoben werden können. Sichern Sie zuerst Ihre vorhandenen Registrierungseinträge , und ändern Sie dann die Registrierung auf eigene Gefahr.
Erhöhen der maximalen Größe der Ereignisprotokolle
Eine große Anzahl von Ereignissen kann sowohl im Sicherheitsprotokoll als auch im Microsoft-Windows-PowerShell/Operational-Ereignisprotokoll generiert werden. Um den Verlust dieser protokollierten Ereignisse zu verhindern, erhöhen Sie die maximale Größe der Protokolle. Wenn jedoch eines dieser Protokolle maximal 100 MB oder größer ist (ein maxSize
Wert von 104.857.600 oder mehr), behalten Sie die maximale Größeneinstellung bei.
Verwenden Sie den Befehl "wevtutil" und die get-log
Option zum Abrufen von Informationen zu Ereignisprotokollen, um die maximale Größe des Protokolls zu überprüfen:
wevtutil get-log "Security"
wevtutil get-log "Microsoft-Windows-PowerShell/Operational"
Es wird eine Ausgabe angezeigt, die dem folgenden Text ähnelt. In diesen Fällen beträgt die maximale Protokollgröße viel weniger als 100 MB.
name: Security
enabled: true
type: Admin
owningPublisher:
isolation: Custom
channelAccess: O:BAG:SYD:(A;;CCLCSDRCWDWO;;;SY)(A;;CCLC;;;BA)(A;;CC;;;ER)(A;;CC;;;NS)
logging:
logFileName: %SystemRoot%\System32\Winevt\Logs\Security.evtx
retention: false
autoBackup: false
maxSize: 20971520
publishing:
fileMax: 1
name: Microsoft-Windows-PowerShell/Operational
enabled: true
type: Operational
owningPublisher: Microsoft-Windows-PowerShell
isolation: Application
channelAccess: O:BAG:SYD:(A;;0x2;;;S-1-15-2-1)(A;;0x2;;;S-1-15-3-1024-3153509613-960666767-3724611135-2725662640-12138253-543910227-1950414635-4190290187)(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x7;;;SO)(A;;0x3;;;IU)(A;;0x3;;;SU)(A;;0x3;;;S-1-5-3)(A;;0x3;;;S-1-5-33)(A;;0x1;;;S-1-5-32-573)
logging:
logFileName: %SystemRoot%\System32\Winevt\Logs\Microsoft-Windows-PowerShell%4Operational.evtx
retention: false
autoBackup: false
maxSize: 15728640
publishing:
fileMax: 1
Um die maximale Größe des Sicherheitsprotokolls oder des Microsoft-Windows-PowerShell/Operational-Ereignisprotokolls auf 100 MB zu erhöhen, führen wevtutil
Sie die set-log
folgende Option aus:
wevtutil set-log "Security" /ms:104857600
wevtutil set-log "Microsoft-Windows-PowerShell/Operational" /ms:104857600
Aktivieren der Prozesserstellungsüberwachung
Verwenden Sie den folgenden Befehl, um die Prozesserstellungsüberwachung zu aktivieren:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit" /v "ProcessCreationIncludeCmdLine_Enabled" /t REG_DWORD /d 1 /f
Aktivieren der PowerShell-Transkription
reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\PowerShell\Transcription" /v "EnableTranscripting" /t REG_DWORD /d 1 /f
reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\PowerShell\Transcription" /v "EnableInvocationHeader" /t REG_DWORD /d 1 /f
reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\PowerShell\Transcription" /v "OutputDirectory" /t REG_SZ /d C:\Transcripts /f
Aktivieren der PowerShell-Modulprotokollierung
reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging" /v "EnableModuleLogging" /t REG_DWORD /d 1 /f
reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging\ModuleNames" /v "*" /t REG_SZ /d *
Aktivieren der PowerShell-Skriptblockprotokollierung
reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" /v "EnableScriptBlockLogging" /t REG_DWORD /d 1 /f
Verstehen der Ausgabe
Die Überwachung der Prozesserstellung schreibt ereignis-ID 4688 und Ereignis-ID 4689 in das Sicherheitsereignisprotokoll. Ereignis-ID 4688 ist für die Prozesserstellung vorgesehen und enthält die Befehlszeile "Prozess". Die Ereignis-ID 4689 ist für die Beendigung des Prozesses vorgesehen.
Die Transkription erstellt eine Textdatei im Verzeichnis "C:\Transcripts\<output-date> ". Das Verzeichnis wird automatisch erstellt, wenn es noch nicht vorhanden ist.
Zum Beispiel:
C:\transkripts\20201211\PowerShell_transcript.<vm-name>.a+BWp8CT.20201211034929.txt
Die Modulprotokollierung protokolliert die Ereignis-ID 4103 im Microsoft-Windows-PowerShell/Operational-Ereignisprotokoll. Das Ereignis "4103" enthält den Cmdlet-Namen und die Ausgabe.
Wenn Sie ausgeführt werden Write-Host $Env:ComputerName
, wird oben in der Ereignis-ID 4013 der folgende Text angezeigt, wobei value="<vm-name>"
angegeben wird, dass die Ausgabe des Befehls der Name Ihrer VM war:
CommandInvocation(Write-Host): "Write-Host"
ParameterBinding(Write-Host): name="Object"; value="<vm-name>"
Die Skriptblockprotokollierung protokolliert die Ereignis-ID 4104 im Microsoft-Windows-PowerShell/Operational-Ereignisprotokoll . Die "4104"-Ereignisse enthalten den Inhalt des Skripts. Skripts, die die maximale Nachrichtengröße eines Ereignisses überschreiten, werden als mehrere "4104"-Ereignisse protokolliert.
Nachdem Sie die Protokollierung aktiviert und den Skriptfehler reproduziert haben, führen Sie das folgende Skript aus, um die relevanten Ereignisse in eine CSV-Datei (Kommagetrennte Werte) zu exportieren. Die folgende Abfrage untersucht die vorherigen 24 Stunden (86.400.000 Millisekunden) von Daten. Geben Sie den Wert 3600000 ein , um nur die letzte Stunde abzurufen. Der Wert 6048000000 ruft die letzte Woche ab.
$path = "PSEvents_$($env:COMPUTERNAME)_$(Get-Date ((Get-Date).ToUniversalTime()) -Format yyyyMMddHHmmss).csv"
$hours = 1 # Increase this to have it query more than just the last 1 hour
$now = Get-Date
$startTimeUtc = Get-Date ($now.AddHours(-$hours).ToUniversalTime()) -Format 'yyyy-MM-ddTHH:mm:ssZ'
$endTimeUtc = Get-Date ($now.ToUniversalTime()) -Format 'yyyy-MM-ddTHH:mm:ssZ'
$filterXML = @"
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
Event
[
System
[
(EventID = '4688' or EventID = '4689')
and
TimeCreated
[
@SystemTime >= '$startTimeUtc'
and
@SystemTime <= '$endTimeUtc'
]
]
and
EventData
[
Data[@Name="SubjectUserSid"] = "S-1-5-18"
]
]
</Select>
</Query>
<Query Id="1" Path="Microsoft-Windows-PowerShell/Operational">
<Select Path="Microsoft-Windows-PowerShell/Operational">
Event
[
System
[
(EventID ='4103' or EventID ='4104')
and
Security
[
@UserID ='S-1-5-18'
]
and
TimeCreated
[
@SystemTime >= '$startTimeUtc'
and
@SystemTime <= '$endTimeUtc'
]
]
]
</Select>
</Query>
</QueryList>
"@
$events = Get-WinEvent -FilterXml $filterXML | Sort-Object -Property RecordId
$events = $events | Select-Object -Property RecordId,
TimeCreated, Id, MachineName, LogName, TaskDisplayName, Message
$events | Export-Csv -Path $path -NoTypeInformation
Deaktivieren der Protokollierung der PowerShell-Skriptausführung
Führen Sie die folgenden Schritte aus, um die von Ihnen vorgenommenen Änderungen rückgängig zu machen, um die Protokollierung von PowerShell-Skripts auf Ihrem virtuellen Computer zu aktivieren:
Wenn Sie zuvor die maximale Größe des Sicherheitsprotokolls oder des Microsoft-Windows-PowerShell/Operational-Protokolls erhöht haben, können Sie diese Werte auf die standardmäßigen maximalen Größen zurücksetzen:
wevtutil set-log "Security" /ms:20971520 wevtutil set-log "Microsoft-Windows-PowerShell/Operational" /ms:15728640
Prozesserstellungsüberwachung deaktivieren:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit" /v "ProcessCreationIncludeCmdLine_Enabled" /t REG_DWORD /d 0 /f
Transkription deaktivieren:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell\Transcription" /v "EnableTranscripting" /t REG_DWORD /d 0 /f reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell\Transcription" /v "EnableInvocationHeader" /t REG_DWORD /d 0 /f reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell\Transcription" /v "OutputDirectory"
Modulprotokollierung deaktivieren:
reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging" /v "EnableModuleLogging" /t REG_DWORD /d 0 /f reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ModuleLogging\ModuleNames" /v "*"
Skriptblockprotokollierung deaktivieren:
reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" /v "EnableScriptBlockLogging" /t REG_DWORD /d 0 /f
Entfernen Sie den Transkriptionsordner:
Remove-Item -Path 'C:\Transcripts' -Force -Recurse
Sichern und löschen Sie entweder das Sicherheitsprotokoll und das Microsoft-Windows-PowerShell/Betriebsprotokoll:
wevtutil clear-log Security /bu:Security.evtx wevtutil clear-log Microsoft-Windows-PowerShell/Operational /bu:Microsoft-Windows-PowerShell_Operational.evtx
Oder löschen Sie das Sicherheitsprotokoll und das Microsoft-Windows-PowerShell/Betriebsprotokoll, ohne sie zu sichern:
wevtutil clear-log Security wevtutil clear-log Microsoft-Windows-PowerShell/Operational
Test Run Command logging on your VM
Laden Sie das Test-CustomScriptExtension.ps1-Testskript in das aktuelle lokale Verzeichnis herunter. Führen Sie dann das Skript auf Ihrem virtuellen Computer mithilfe des Cmdlets Invoke-AzVMRunCommand aus . Verwenden Sie die Eigenschaften Ihres virtuellen Computers, um die Platzhalter für den Ressourcengruppennamen und vm-Namen zu ersetzen.
$scriptUri = 'https://raw.githubusercontent.com/Azure/azure-support-scripts/blob/users/GitHubPolicyService/6294a303-e34d-4bad-b6cd-5ed54245f020/Images_Extensions/PowerShell/Test-CustomScriptExtension.ps1'
$localFileLocation = "$PWD\Test-CustomScriptExtension.ps1"
(New-Object System.Net.WebClient).DownloadFile($scriptUri, $localFileLocation)
$commandSettings = @{
ResourceGroupName = '<resource-group-name>'
VMName = '<vm-name>'
CommandId = 'RunPowerShellScript'
ScriptPath = $localFileLocation
}
Invoke-AzVMRunCommand @commandSettings
Testen der Protokollierung der benutzerdefinierten Skripterweiterung auf Ihrem virtuellen Computer
Führen Sie das Testskript Test-CustomScriptExtension.ps1 auf Ihrem virtuellen Computer mithilfe des Cmdlets Set-AzVMCustomScriptExtension aus. Verwenden Sie die Eigenschaften Ihres virtuellen Computers, um die Platzhalter für den Ressourcengruppennamen, den VM-Namen und den Speicherort zu ersetzen.
$commandSettings = @{
ResourceGroupName = '<resource-group-name>'
VMName = '<vm-name>'
Name = 'CustomScriptExtension'
FileUri = 'https://raw.githubusercontent.com/Azure/azure-support-scripts/blob/users/GitHubPolicyService/6294a303-e34d-4bad-b6cd-5ed54245f020/Images_Extensions/PowerShell/Test-CustomScriptExtension.ps1'
Run = 'Test-CustomScriptExtension.ps1'
Location = '<azure-region-name-or-code>'
ForceRerun = (Get-Date).Ticks
}
Set-AzVMCustomScriptExtension @commandSettings
Alternativ können Sie dieses Testskript auf Ihrem virtuellen Computer mithilfe des Cmdlets Set-AzVMExtension ausführen. Sie müssen einen ExtensionType
Parameter CustomScriptExtension
zusammen mit mehreren anderen Parameteränderungen angeben. Verwenden Sie die Eigenschaften Ihres virtuellen Computers, um die Platzhalter für den Ressourcengruppennamen, den VM-Namen und den Speicherort zu ersetzen.
$publicConfigSettings = @{
'fileUris' = @('https://raw.githubusercontent.com/Azure/azure-support-scripts/blob/users/GitHubPolicyService/6294a303-e34d-4bad-b6cd-5ed54245f020/Images_Extensions/PowerShell/Test-CustomScriptExtension.ps1')
'commandToExecute' = 'powershell -File Test-CustomScriptExtension.ps1 -ExecutionPolicy Unrestricted'
}
$commandSettings = @{
Publisher = 'Microsoft.Compute'
ExtensionType = 'CustomScriptExtension'
Settings = $publicConfigSettings
ResourceGroupName = '<resource-group-name>'
VMName = '<vm-name>'
Name = 'CustomScriptExtension'
TypeHandlerVersion = '1.10'
Location = '<azure-region-name-or-code>'
}
Set-AzVMExtension @commandSettings
Häufige Fehler im Testskript für benutzerdefinierte Skripterweiterungen
Nonzero-Exitcode: Nachdem Sie das Skript "Test-CustomScriptExtension.ps1 " ausgeführt haben, wird erwartet, dass die folgende Fehlermeldung angezeigt wird:
Fehler beim Vorgang mit langer Ausführungszeit mit dem Status ‚Fehler‘.
Zusätzliche Informationen: VM hat beim Verarbeiten der Erweiterung "CustomScriptExtension" einen Fehler gemeldet.
Fehlermeldung: "Befehlsausführung abgeschlossen, aber fehlgeschlagen, weil sie einen Nicht-Null-Exitcode von: '2'" zurückgegeben hat.Das Testskript führt den
Exit 2
Befehl aus, und die benutzerdefinierte Skripterweiterung wird erwartet, dass der Entwurf fehlschlägt, wenn das Skript einen Nichtzero-Ausgangscode zurückgibt. (In diesem Beispiel ist 2 der Nichtzero-Ausgangscode.) In diesem Beispiel wird gezeigt, wie ein Fehler in der zusätzlichen PowerShell-Protokollierung angezeigt wird, die Sie aktiviert haben.Änderung ist in Konflikt: Dieser Fehler gibt an, dass die VM bereits die benutzerdefinierte Skripterweiterung als Ressourcenname Microsoft.Compute.CustomScriptExtension installiert hat, Sie aber einen anderen Ressourcennamen von CustomScriptExtension für Ihre aktuelle Ausführung angeben:
handlerVersion oder autoUpgradeMinorVersion für die VM-Erweiterung 'CustomScriptExtension' kann nicht aktualisiert werden.
Die Änderung steht in Konflikt mit anderen Erweiterungen unter dem Handler "Microsoft.Compute.CustomScriptExtension", mit typeHandler-Version "1.10" und "autoUpgradeMinorVersion "True".
ErrorCode: OperationNotAllowed
ErrorMessage: handlerVersion oder autoUpgradeMinorVersion für VM-Erweiterung 'CustomScriptExtension' kann nicht aktualisiert werden.
Die Änderung steht in Konflikt mit anderen Erweiterungen unter dem Handler "Microsoft.Compute.CustomScriptExtension", mit typeHandler-Version "1.10" und "autoUpgradeMinorVersion "True".
ErrorTarget:
StatusCode: 409
ReasonPhrase: KonfliktSie können den gewünschten Ressourcennamen angeben. Wenn Sie jedoch bereits die benutzerdefinierte Skripterweiterung installiert haben, müssen Sie eine der folgenden Aktionen ausführen:
- Verwenden Sie denselben Namen für nachfolgende Ausführungen.
- Entfernen Sie zuerst diese Erweiterungsressource, bevor Sie einen anderen Ressourcennamen verwenden.
Ungültige Datei-URI-Konfiguration: Dieser Fehler gibt an, dass die benutzerdefinierte Skripterweiterung ursprünglich zusammen mit Datei-URIs installiert wurde, die in geschützten Einstellungen angegeben sind, aber jetzt in öffentlichen Einstellungen angegeben sind (oder umgekehrt):
Fehler beim Vorgang mit langer Ausführungszeit mit dem Status ‚Fehler‘.
Zusätzliche Informationen: VM hat beim Verarbeiten der Erweiterung "CustomScriptExtension" einen Fehler gemeldet.
Fehlermeldung: "Ungültige Konfiguration – FileUris ist sowohl im geschützten als auch im öffentlichen Konfigurationsabschnitt vorhanden; sie darf nur in einem Abschnitt angegeben werden."
Lösungen für häufige Fehler im Testskript für benutzerdefinierte Skripterweiterungen
Um den Fehler "Änderung ist in Konflikt" zu beheben, versuchen Sie, den Parameter erneut auszuführen
Set-AzVMCustomScriptExtension
oderSet-AzVMExtension
festzulegen, legen Sie-Name
den Parameter jedoch auf den Ressourcennamen der Benutzerdefinierten Skripterweiterungsressource fest, die bereits auf dem virtuellen Computer installiert ist. Geben Sie für den Beispielfehler beim Entfernen der Erweiterung einen-Name
Parameter von Microsoft.Compute.CustomScriptExtension an.-Name
Der Parameter muss jedoch unabhängig vom Ressourcennamen für die Erweiterungsressource sein, die bereits auf dem virtuellen Computer installiert ist.Der Name, für den sie verwendet
-Name
werden soll, ist der Ressourcenname in diesem Teil des Fehlers: "Änderung steht in Konflikt mit anderen Erweiterungen unter dem Handler "<Ressourcenname>".Sie können auch den richtigen Ressourcennamen überprüfen, der verwendet werden soll, indem Sie ihn aus dem VM-Status abrufen. Geben Sie das Cmdlet "Get-AzVM " wie folgt ein:
$status = Get-AzVM -ResourceGroupName <resource-group> -Name <vm-name> -Status $status.Extensions | Where-Object Type -EQ 'Microsoft.Compute.CustomScriptExtension' | Select-Object Name
Um den Fehler "Änderung ist in Konflikt" und den Fehler "FileUris" zu verringern, können Sie die vorhandene benutzerdefinierte Skripterweiterung entfernen, indem Sie das Cmdlet Remove-AzVMCustomScriptExtension eingeben:
$params = @{ ResourceGroupName = '<resourceGroupName>' VMName = '<vm-name>' Name = '<extension-resource-name>' Force = $True } Remove-AzVMCustomScriptExtension @params
Wenn Sie den falschen Ressourcennamen angeben, lautet
NoContent
der zurückgegebeneStatusCode
Wert :RequestId IsSuccessStatusCode StatusCode ReasonPhrase --------- ------------------- ---------- ------------ True NoContent No Content
Wenn Sie den richtigen Ressourcennamen angeben, lautet
OK
der zurückgegebeneStatusCode
Wert:RequestId IsSuccessStatusCode StatusCode ReasonPhrase --------- ------------------- ---------- ------------ True OK OK
References
- Problembehandlung bei Fehlern im Zusammenhang mit Azure Windows-VM-Erweiterungen
- Skriptablaufverfolgung und Protokollierung
- Bekannte Sicherheits-IDs in Windows-Betriebssystemen
- Windows-Protokollierung
- Überwachen des Erfolgsprozesserstellungsereignisses
- Windows-Konfiguration – Einrichten eines Opfersystems
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.
Haftungsausschluss für Kontaktinformationen von Drittanbietern
Die Kontaktinformationen zu den in diesem Artikel erwähnten Drittanbietern sollen Ihnen helfen, zusätzliche Informationen zu diesem Thema zu finden. Diese Kontaktinformationen können ohne vorherige Ankündigung geändert werden. Sie werden von Microsoft ohne jede Gewähr weitergegeben.