簡體   English   中英

Powershell使用Powershell命令進行編碼

[英]Powershell encode with powershell commands

我有下面的PowerShell命令,

$tmp = Get-Content 'C:\Users\username\Documents\emp_details.txt'
$tmp[0..75], ':tech emp details', $tmp[76.. ($tmp.Count -1)] | 
    Set-Content 'C:\Users\username\Documents\emp_details.txt'

我想將其編碼,並將整個命令作為字符串存儲,並將其存儲到變量中,然后在需要時將其解碼並執行。 但是,當我嘗試使用以下代碼進行解碼時,在內部也執行Get-Content命令。

$Bytes = [System.Text.Encoding]::Unicode.GetBytes("$tmp = Get-Content 'C:\Users\username\Documents\emp_details.txt'
$tmp[0..75], ':tech emp details', $tmp[76.. ($tmp.Count -1)] | 
    Set-Content 'C:\Users\username\Documents\emp_details.txt'")
$EncodedText =[Convert]::ToBase64String($Bytes)
$EncodedText

任何想法都請在不內部執行這些命令的情況下將這些命令編碼為字符串。

Phil提出的制作腳本塊的建議是一個很好的建議。 這是將命令存儲到變量$thecmd

$thecmd = {$tmp = Get-Content "C:\Users\$Env:USERNAME\Documents\$emp_details.txt"
    $tmp[0..75], ':tech emp details', $tmp[76.. ($tmp.Count -1)] | 
    Set-Content "C:\Users\$Env:USERNAME\Documents\emp_details_out.txt"}

$thecmd的值將是$thecmd文本。 為了運行它,請使用調用運算符( & )。

& $thecmd

我將您的硬編碼路徑更改為使用$ Env:USERNAME變量。 另外,如果源文本文件沒有至少75行,會發生什么情況?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM