Как Инициализировать массив символов от строки

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

param (
    $queryResults = $null,
    [string]$UserName = $env:USERNAME,
    [string]$ServerName = "YourServerName"
)


if (Test-Connection $ServerName -Count 1 -Quiet) {  
    Write-Host "`n`n`n$ServerName is online!" -BackgroundColor Green -ForegroundColor Black


    Write-Host ("`nQuerying Server: `"$ServerName`" for disconnected sessions under UserName: `"" + $UserName.ToUpper() + "`"...") -BackgroundColor Gray -ForegroundColor Black

        query user $UserName /server:$ServerName 2>&1 | foreach {  

            if (

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

-match "Active") { Write-Host "Active Sessions" $queryResults = ("`n$ServerName," + ((

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

.trim() -replace ' {2,}', ','))) | ConvertFrom-Csv -Delimiter "," -Header "ServerName","UserName","SessionName","SessionID","CurrentState","IdealTime","LogonTime" $queryResults | ft Write-Host "Starting logoff procedure..." -BackgroundColor Gray -ForegroundColor Black $queryResults | foreach { $Sessionl =

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

.SessionID $Serverl =

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

.ServerName Write-Host "Logging off"

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

.username"from $serverl..." -ForegroundColor black -BackgroundColor Gray sleep 2 logoff $Sessionl /server:$Serverl /v } } elseif (

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

-match "Disc") { Write-Host "Disconnected Sessions" $queryResults = ("`n$ServerName," + ((

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

.trim() -replace ' {2,}', ','))) | ConvertFrom-Csv -Delimiter "," -Header "ServerName","UserName","SessionID","CurrentState","IdealTime","LogonTime" $queryResults | ft Write-Host "Starting logoff procedure..." -BackgroundColor Gray -ForegroundColor Black $queryResults | foreach { $Sessionl =

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

.SessionID $Serverl =

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

.ServerName Write-Host "Logging off"

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

.username"from $serverl..." sleep 2 logoff $Sessionl /server:$Serverl /v } } elseif (

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

-match "The RPC server is unavailable") { Write-Host "Unable to query the $ServerName, check for firewall settings on $ServerName!" -ForegroundColor White -BackgroundColor Red } elseif (

Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.

[110]

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

-match "No User exists for") {Write-Host "No user session exists"} } } else { Write-Host "`n`n`n$ServerName is Offline!" -BackgroundColor red -ForegroundColor white Write-Host "Error: Unable to connect to $ServerName!" -BackgroundColor red -ForegroundColor white Write-Host "Either the $ServerName is down or check for firewall settings on server $ServerName!" -BackgroundColor Yellow -ForegroundColor black } Read-Host "`n`nScript execution finished, press enter to exit!"

Некоторые примеры выходных данных. Для активного сеанса: enter image description here

Для отключенных сеансов: enter image description here

, если сеансов не найдено: enter image description here Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.

Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы

15
задан Arnaud Gouder de Beauregard 8 June 2009 в 09:00
поделиться

10 ответов

Вы не можете - в C. В C инициализация глобальных и локальных статических переменных спроектирована таким образом, что компилятор может статически помещать значения в исполняемый файл. Он не может обрабатывать неконстантные выражения в качестве инициализаторов. И только в C99 вы можете использовать непостоянные выражения в агрегатных инициализаторах - но не в C89!

В вашем случае, поскольку ваш массив представляет собой массив, содержащий символы, каждый элемент должен быть арифметическим постоянным выражением. операнды, которые являются целочисленными константами, плавающими константами, константами перечисления, символом константы и выражения sizeof.

Конечно, это не удовлетворяет ваш инициализатор, который использует операнд типа указателя. Конечно, другой способ - инициализировать ваш массив с помощью строкового литерала, как это тоже объясняется

Все выражения в инициализаторе для объекта, который имеет статическую продолжительность хранения, должны быть константными выражениями или строковыми литералами.

Все кавычки взят из проекта комитета C99 TC3. Итак, в заключение, то, что вы хотите сделать - используя непостоянное выражение - не может быть выполнено с помощью C. У вас есть несколько вариантов:

  • Записывайте свой материал несколько раз - один раз в обратном порядке, а другой не в обратном.
  • Измените язык - все это умеет C ++.
  • Если вы действительно хотите делать то же самое, используйте массив char const * вместо

Вот что я имею в виду под последней опцией

char const c[] = "ABCD";
char const *f[] = { &c[0], &c[1], &c[2], &c[3] };
char const *g[] = { &c[3], &c[2], &c[1], &c[0] };

Это отлично работает, поскольку выражение константы адреса используется для инициализации указателей

Константа адреса - нулевой указатель, указатель на lvalue, обозначающий объект со статической продолжительностью хранения, или указатель на указатель функции; он должен быть создан явно с использованием унарного оператора & или целочисленной константы, приведенной к типу указателя, или неявно с помощью выражения типа массива или функции. Индекс массива [] и доступ к члену. и ->, унарные операторы адреса & и косвенного обращения *, а также приведение указателей могут использоваться при создании адресной константы, но к значению объекта нельзя обращаться с помощью этих операторов.

Вы можете иметь Удачи в настройке параметров вашего компилятора - еще одна цитата:

Реализация может принимать другие формы константных выражений.

18
ответ дан 1 December 2019 в 02:55
поделиться

Просто

const char S[] = "ABCD";

должно работать.

Какой у вас компилятор?

5
ответ дан 1 December 2019 в 02:55
поделиться

Это прекрасно компилируется на gcc версии 4.3.3 (Ubuntu 4.3.3-5ubuntu4).

const char s[] = "cheese";

int main()
{
    return 0;
}
0
ответ дан 1 December 2019 в 02:55
поделиться

Странная ошибка.

Можете ли вы проверить это?

const char* const S = "ABCD";
char t[] = { S[0], S[1], S[2], S[3] };
char u[] = { S[3], S[2], S[1], S[0] };
0
ответ дан 1 December 2019 в 02:55
поделиться
const char S[] = "ABCD";

Это должно работать. Я использую только эти обозначения, и у меня они отлично работают. Я не знаю, как вы это используете.

0
ответ дан 1 December 2019 в 02:55
поделиться

Вот непонятное решение: определить функцию макроса:

#define Z(x) \
        (x==0 ? 'A' : \
        (x==1 ? 'B' : \
        (x==2 ? 'C' : '\0')))

char x[] = { Z(0), Z(1), Z(2) };
0
ответ дан 1 December 2019 в 02:55
поделиться

Это один из случаев, когда может помочь сценарий для генерации соответствующего кода.

0
ответ дан 1 December 2019 в 02:55
поделиться

Проблема компиляции возникает у меня (gcc 4.3, ubuntu 8.10) только в том случае, если три переменные являются глобальными. Проблема в том, что C не работает как языки сценариев, поэтому нельзя считать само собой разумеющимся, что инициализация u и t происходит после инициализации s. Вот почему вы получаете ошибку компиляции. Теперь вы не можете инициализировать t и y так, как вы это делали раньше, поэтому вам понадобится char *. Код, выполняющий эту работу, следующий:

#include <stdio.h>
#include <stdlib.h>

#define STR "ABCD"

const char s[] = STR;
char* t;
char* u;

void init(){
    t = malloc(sizeof(STR)-1);
    t[0] = s[0];
    t[1] = s[1];
    t[2] = s[2];
    t[3] = s[3];


    u = malloc(sizeof(STR)-1);
    u[0] = s[3];
    u[1] = s[2];
    u[2] = s[1];
    u[3] = s[0];
}

int main(void) {
    init();
    puts(t);
    puts(u);

    return EXIT_SUCCESS;
}
0
ответ дан 1 December 2019 в 02:55
поделиться

Я не уверен, в чем ваша проблема , но следующее, похоже, работает нормально:

#include <stdio.h>

int main()
{
    const char s0[] = "ABCD";
    const char s1[] = { s0[3], s0[2], s0[1], s0[0], 0 };

    puts(s0);
    puts(s1);
    return 0;
}


Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
cl /Od /D "WIN32" /D "_CONSOLE" /Gm /EHsc /RTC1 /MLd /W3 /c /ZI /TC
   .\Tmp.c
Tmp.c
Linking...

Build Time 0:02


C:\Tmp>tmp.exe
ABCD
DCBA

C:\Tmp>

Edit 9 June 2009

Если вам нужен глобальный доступ, вам может понадобиться что-нибудь вроде этого:

#include <stdio.h>

const char *GetString(int bMunged)
{
    static char s0[5] = "ABCD";
    static char s1[5];

    if (bMunged) {
        if (!s1[0])  {
            s1[0] = s0[3]; 
            s1[1] = s0[2];
            s1[2] = s0[1];
            s1[3] = s0[0];
            s1[4] = 0;
        }
        return s1;
    } else {
        return s0;
    }
}

#define S0 GetString(0)
#define S1 GetString(1)

int main()
{
    puts(S0);
    puts(S1);
    return 0;
}
0
ответ дан 1 December 2019 в 02:55
поделиться

Возможно, ваш символьный массив должен быть постоянным. Поскольку вы инициализируете свой массив символами из постоянной строки, ваш массив должен быть постоянным. Попробуйте следующее:

#define S "ABCD"
const char a[] = { S[0], S[1], S[2], S[3] };
-1
ответ дан 1 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: