Import-Clixml
Importuje plik CLIXML i tworzy odpowiednie obiekty w programie PowerShell.
Składnia
Import-Clixml
[-Path] <String[]>
[-IncludeTotalCount]
[-Skip <UInt64>]
[-First <UInt64>]
[<CommonParameters>]
Import-Clixml
-LiteralPath <String[]>
[-IncludeTotalCount]
[-Skip <UInt64>]
[-First <UInt64>]
[<CommonParameters>]
Opis
Polecenie Import-Clixml
cmdlet importuje obiekty, które zostały serializowane do pliku XML infrastruktury języka wspólnego (CLI). Cennym zastosowaniem na komputerach z Import-Clixml
systemem Windows jest zaimportowanie poświadczeń i bezpiecznych ciągów, które zostały wyeksportowane jako bezpieczny kod XML przy użyciu polecenia Export-Clixml
.
Przykład nr 2 pokazuje, jak zaimportować Import-Clixml
bezpieczny obiekt poświadczeń.
Dane CLIXML są deserializowane z powrotem do obiektów programu PowerShell. Jednak obiekty deserializowane nie są obiektami na żywo. Są to migawka obiektów w czasie serializacji. Obiekty deserializowane zawierają właściwości, ale nie są to metody.
Właściwość TypeNames zawiera oryginalną nazwę typu poprzedzoną prefiksem Deserialized
.
Przykład nr 3 przedstawia właściwość TypeNames obiektu deserializowanego.
Import-Clixml
używa znaku byte-order-mark (BOM) do wykrywania formatu kodowania pliku. Jeśli plik nie ma modelu BOM, przyjmuje się, że kodowanie to UTF8.
Aby uzyskać więcej informacji na temat interfejsu wiersza polecenia, zobacz Niezależność języka.
Przykłady
Przykład 1. Importowanie serializowanego pliku i ponowne utworzenie obiektu
W tym przykładzie Export-Clixml
użyto polecenia cmdlet do zapisania serializacji kopii informacji o procesie zwróconych przez program Get-Process
. Import-Clixml
pobiera zawartość pliku serializowanego i ponownie tworzy obiekt przechowywany w zmiennej $Processes
.
Get-Process | Export-Clixml -Path .\pi.xml
$Processes = Import-Clixml -Path .\pi.xml
Przykład 2. Importowanie bezpiecznego obiektu poświadczeń
W tym przykładzie, biorąc pod uwagę poświadczenia przechowywane w $Credential
zmiennej, uruchamiając polecenie cmdlet, możesz uruchomić Get-Credential
Export-Clixml
polecenie cmdlet, aby zapisać poświadczenia na dysku.
Ważne
Export-Clixml
eksportuje tylko zaszyfrowane poświadczenia w systemie Windows. W systemach operacyjnych innych niż Windows, takich jak macOS i Linux, poświadczenia są eksportowane w postaci zwykłego tekstu.
$Credxmlpath = Join-Path (Split-Path $Profile) TestScript.ps1.credential
$Credential | Export-Clixml $Credxmlpath
$Credxmlpath = Join-Path (Split-Path $Profile) TestScript.ps1.credential
$Credential = Import-Clixml $Credxmlpath
Polecenie Export-Clixml
cmdlet szyfruje obiekty poświadczeń przy użyciu interfejsu API ochrony danych systemu Windows. Szyfrowanie gwarantuje, że tylko twoje konto użytkownika może odszyfrować zawartość obiektu poświadczeń. Wyeksportowany CLIXML
plik nie może być używany na innym komputerze lub przez innego użytkownika.
W przykładzie plik, w którym są przechowywane poświadczenia, jest reprezentowany przez element TestScript.ps1.credential
. Zastąp element TestScript nazwą skryptu, za pomocą którego ładujesz poświadczenia.
Obiekt poświadczeń można wysłać w dół potoku do Export-Clixml
, a następnie zapisać go w ścieżce , $Credxmlpath
określony w pierwszym poleceniu.
Aby automatycznie zaimportować poświadczenia do skryptu, uruchom dwa ostatnie polecenia. Uruchom polecenie , Import-Clixml
aby zaimportować zabezpieczony obiekt poświadczeń do skryptu. Ten import eliminuje ryzyko ujawnienia haseł w postaci zwykłego tekstu w skrypcie.
Przykład 3. Sprawdzanie właściwości TypeNames obiektu deserializowanego
W tym przykładzie pokazano importowanie obiektu przechowywanego jako dane CLIXML. Dane są deserializowane z powrotem do obiektu programu PowerShell. Jednak obiekt deserializowany nie jest obiektem dynamicznym. Są to migawka obiektów w czasie serializacji. Obiekty deserializowane zawierają właściwości, ale nie są to metody.
$original = [pscustomobject] @{
Timestamp = Get-Date
Label = 'Meeting event'
}
$original | Add-Member -MemberType ScriptMethod -Name GetDisplay -Value {
'{0:yyyy-MM-dd HH:mm} {1}' -f $this.Timestamp, $this.Label
}
$original | Get-Member -MemberType ScriptMethod
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Label NoteProperty string Label=Meeting event
Timestamp NoteProperty System.DateTime Timestamp=1/31/2024 2:27:59 PM
GetDisplay ScriptMethod System.Object GetDisplay();
$original | Export-Clixml -Path event.clixml
$deserialized = Import-CliXml -Path event.clixml
$deserialized | Get-Member
TypeName: Deserialized.System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Label NoteProperty string Label=Meeting event
Timestamp NoteProperty System.DateTime Timestamp=1/31/2024 2:27:59 PM
Należy pamiętać, że typ obiektu w pliku $original
to System.Management.Automation.PSCustomObject, ale typ obiektu w obiekcie $deserialized
to Deserialized.System.Management.Automation.PSCustomObject. Ponadto brakuje GetDisplay()
metody z obiektu deserializowanego.
Parametry
-First
Pobiera tylko określoną liczbę obiektów. Wprowadź liczbę obiektów do pobrania.
Type: | UInt64 |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-IncludeTotalCount
Raportuje łączną liczbę obiektów w zestawie danych, a następnie zaznaczonych obiektów. Jeśli polecenie cmdlet nie może określić łącznej liczby, zostanie wyświetlona wartość Nieznana łączna liczba. Liczba całkowita ma właściwość Accuracy , która wskazuje niezawodność całkowitej wartości liczby. Wartość parametru Dokładność waha się od do 1.0
miejsca, w 0.0
którym 0.0
oznacza, że polecenie cmdlet nie może zliczyć obiektów, oznacza, 1.0
że liczba jest dokładna, a wartość między 0.0
i 1.0
wskazuje coraz bardziej niezawodne oszacowanie.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
Określa ścieżkę do plików XML. W przeciwieństwie do ścieżki, wartość parametru LiteralPath jest używana dokładnie tak, jak jest typowana. Znaki nie są interpretowane jako symbole wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy je ująć w pojedynczy cudzysłów. Znaki pojedynczego cudzysłowu informują program PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Path
Określa ścieżkę do plików XML.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Skip
Pomija określoną liczbę obiektów, a następnie pobiera pozostałe obiekty. Wprowadź liczbę obiektów do pominięcia.
Type: | UInt64 |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Dane wejściowe
Możesz potokować ciąg zawierający ścieżkę do tego polecenia cmdlet.
Dane wyjściowe
To polecenie cmdlet zwraca obiekty, które zostały deserializowane z przechowywanych plików XML.
Uwagi
Podczas określania wielu wartości parametru użyj przecinków, aby oddzielić wartości. Na przykład <parameter-name> <value1>, <value2>
.