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 cmdlet Import-Clixml
importuje obiekty, które zostały serializowane do pliku XML infrastruktury języka wspólnego (CLI). Cennym zastosowaniem Import-Clixml
na komputerach z systemem Windows jest zaimportowanie poświadczeń i bezpiecznych ciągów wyeksportowanych jako bezpieczny kod XML przy użyciu Export-Clixml
.
Przykład 2 pokazuje, jak używać Import-Clixml
do importowania bezpiecznego obiektu 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 #3 pokazać 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 Language independence.
Przykłady
Przykład 1. Importowanie serializowanego pliku i ponowne utworzenie obiektu
W tym przykładzie użyto polecenia cmdlet Export-Clixml
, aby zapisać serializowaną kopię informacji o procesie zwróconych przez Get-Process
.
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 polecenie cmdlet Get-Credential
, możesz uruchomić polecenie cmdlet Export-Clixml
, aby zapisać poświadczenia na dysku.
Ważny
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 cmdlet Export-Clixml
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 plik CLIXML
nie może być używany na innym komputerze ani przez innego użytkownika.
W przykładzie plik, w którym przechowywane są poświadczenia, jest reprezentowany przez TestScript.ps1.credential
. Zastąp TestScript nazwą skryptu, za pomocą którego ładujesz poświadczenia.
Obiekt poświadczeń zostanie wysłany w dół potoku do Export-Clixml
i zapisz go w ścieżce $Credxmlpath
, który został określony w pierwszym poleceniu.
Aby automatycznie zaimportować poświadczenia do skryptu, uruchom dwa ostatnie polecenia. Uruchom 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
to System.Management.Automation.PSCustomObject, ale typ obiektu w $deserialized
jest Deserialized.System.Management.Automation.PSCustomObject. Ponadto w obiekcie deserializowanym brakuje metody GetDisplay()
.
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ć całkowitej liczby, zostanie wyświetlona Nieznana łączna liczba. Liczba całkowita ma właściwość Dokładności, która wskazuje niezawodność wartości całkowitej liczby. Wartość dokładności waha się od 0.0
do 1.0
, gdzie 0.0
oznacza, że polecenie cmdlet nie może zliczyć obiektów, 1.0
oznacza, że liczba jest dokładna, a wartość między 0.0
a 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 Pathwartość 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
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 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>
.