Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «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] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.
Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы
-match "Active") {
Write-Host "Active Sessions"
$queryResults = ("`n$ServerName," + (( Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.
[110] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов 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] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.
Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы
.SessionID
$Serverl = Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.
[110] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.
Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы
.ServerName
Write-Host "Logging off" Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.
[110] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.
Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы
.username"from $serverl..." -ForegroundColor black -BackgroundColor Gray
sleep 2
logoff $Sessionl /server:$Serverl /v
}
}
elseif ( Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.
[110] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.
Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы
-match "Disc") {
Write-Host "Disconnected Sessions"
$queryResults = ("`n$ServerName," + (( Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.
[110] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов 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] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.
Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы
.SessionID
$Serverl = Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.
[110] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.
Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы
.ServerName
Write-Host "Logging off" Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.
[110] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.
Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы
.username"from $serverl..."
sleep 2
logoff $Sessionl /server:$Serverl /v
}
}
elseif ( Приведенный ниже сценарий будет хорошо работать как для активных, так и для отключенных сеансов, если у пользователя есть доступ к удаленному запуску команды выхода из системы. Все, что вам нужно сделать, это изменить имя сервера с «YourServerName» на 4-й строке.
[110] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов 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] Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов 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!"
Некоторые примеры выходных данных. Для активного сеанса:
, если сеансов не найдено: Также проверьте это решение, чтобы запросить у всех серверов AD ваше имя пользователя и выйти только из отключенных сеансов. Сценарий также сообщит вам, если произошла ошибка при подключении или запросе к серверу.
Powershell для обнаружения отключенного сеанса RDP и одновременного выхода из системы
Вы не можете - в C. В C инициализация глобальных и локальных статических переменных спроектирована таким образом, что компилятор может статически помещать значения в исполняемый файл. Он не может обрабатывать неконстантные выражения в качестве инициализаторов. И только в C99 вы можете использовать непостоянные выражения в агрегатных инициализаторах - но не в C89!
В вашем случае, поскольку ваш массив представляет собой массив, содержащий символы, каждый элемент должен быть арифметическим постоянным выражением. операнды, которые являются целочисленными константами, плавающими константами, константами перечисления, символом константы и выражения sizeof.
Конечно, это не удовлетворяет ваш инициализатор, который использует операнд типа указателя. Конечно, другой способ - инициализировать ваш массив с помощью строкового литерала, как это тоже объясняется
Все выражения в инициализаторе для объекта, который имеет статическую продолжительность хранения, должны быть константными выражениями или строковыми литералами.
Все кавычки взят из проекта комитета C99 TC3. Итак, в заключение, то, что вы хотите сделать - используя непостоянное выражение - не может быть выполнено с помощью 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, обозначающий объект со статической продолжительностью хранения, или указатель на указатель функции; он должен быть создан явно с использованием унарного оператора & или целочисленной константы, приведенной к типу указателя, или неявно с помощью выражения типа массива или функции. Индекс массива [] и доступ к члену. и ->, унарные операторы адреса & и косвенного обращения *, а также приведение указателей могут использоваться при создании адресной константы, но к значению объекта нельзя обращаться с помощью этих операторов.
Вы можете иметь Удачи в настройке параметров вашего компилятора - еще одна цитата:
Реализация может принимать другие формы константных выражений.
Просто
const char S[] = "ABCD";
должно работать.
Какой у вас компилятор?
Это прекрасно компилируется на gcc версии 4.3.3 (Ubuntu 4.3.3-5ubuntu4).
const char s[] = "cheese";
int main()
{
return 0;
}
Странная ошибка.
Можете ли вы проверить это?
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] };
const char S[] = "ABCD";
Это должно работать. Я использую только эти обозначения, и у меня они отлично работают. Я не знаю, как вы это используете.
Вот непонятное решение: определить функцию макроса:
#define Z(x) \
(x==0 ? 'A' : \
(x==1 ? 'B' : \
(x==2 ? 'C' : '\0')))
char x[] = { Z(0), Z(1), Z(2) };
Это один из случаев, когда может помочь сценарий для генерации соответствующего кода.
Проблема компиляции возникает у меня (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;
}
Я не уверен, в чем ваша проблема , но следующее, похоже, работает нормально:
#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;
}
Возможно, ваш символьный массив должен быть постоянным. Поскольку вы инициализируете свой массив символами из постоянной строки, ваш массив должен быть постоянным. Попробуйте следующее:
#define S "ABCD"
const char a[] = { S[0], S[1], S[2], S[3] };