Udostępnij za pośrednictwem


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. W przykładzie nr 2 pokazano, jak zaimportować Import-Clixml bezpieczny obiekt poświadczeń.

Dane CLIXML są deserializowane z powrotem do obiektów programu PowerShell. Jednak zdeserializowane obiekty nie są obiektami dynamicznymi. Są to migawki obiektów w czasie serializacji. Zdeserializowane obiekty 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, zakłada, ż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 Get-Processprogram . Import-Clixml pobiera zawartość pliku serializowanego i tworzy ponownie 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 zmiennej $Credential , uruchamiając Get-Credential polecenie cmdlet, możesz uruchomić Export-Clixml polecenie cmdlet, aby zapisać poświadczenie 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 zapewnia, że tylko 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 przechowywane są poświadczenia, jest reprezentowany przez TestScript.ps1.credentialelement . Zastąp ciąg TestScript nazwą skryptu, za pomocą którego ładujesz poświadczenia.

Obiekt poświadczeń jest wysyłany w dół potoku do Export-Clixmlelementu i zapisuje go w ścieżce , $Credxmlpathokreślonej 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 deserializowany obiekt nie jest obiektem dynamicznym. Są to migawki obiektów w czasie serializacji. Zdeserializowane obiekty 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 $original obiekcie to System.Management.Automation.PSCustomObject, ale typ obiektu w $deserialized pliku to Deserialized.System.Management.Automation.PSCustomObject. GetDisplay() Ponadto w obiekcie deserializowanym brakuje metody .

Parametry

-First

Pobiera tylko określoną liczbę obiektów. Wprowadź liczbę obiektów do pobrania.

Typ:UInt64
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-IncludeTotalCount

Raportuje łączną liczbę obiektów w zestawie danych, po których następuje wybrane obiekty. Jeśli polecenie cmdlet nie może określić łącznej liczby, zostanie wyświetlona nieznana liczba sum. Liczba całkowita ma właściwość Accuracy , która wskazuje niezawodność wartości całkowitej liczby. Wartość wartości Dokładności waha się od 0.0 do 1.0 , gdzie 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 wiarygodne oszacowanie.

Typ:SwitchParameter
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych: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 ująć ją w pojedynczy cudzysłów. Pojedyncze znaki cudzysłowu informują program PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki.

Typ:String[]
Aliasy:PSPath, LP
Position:Named
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Path

Określa ścieżkę do plików XML.

Typ:String[]
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Skip

Ignoruje określoną liczbę obiektów, a następnie pobiera pozostałe obiekty. Wprowadź liczbę obiektów do pominięcia.

Typ:UInt64
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

Dane wejściowe

String

Możesz potokować ciąg zawierający ścieżkę do tego polecenia cmdlet.

Dane wyjściowe

PSObject

To polecenie cmdlet zwraca obiekty, które zostały zdeserializowane 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>.